═══ 1. License Information ═══ PM Patrol(tm) (c) Copyright 1993-96, WallyWare, All rights reserved. Unregistered copies of PM Patrol are freely distributable and copying is encouraged. If you like it, tell a friend. If not, tell us. PM Patrol is supplied "as is" without any warranties either expressed or implied. IN NO EVENT WILL WALLYWARE BE LIABLE TO YOU FOR ANY INCIDENTAL, SPECIAL, PUNITIVE, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING FROM OR CONNECTED WITH THIS AGREEMENT OR USE OF THIS PRODUCT, REGARDLESS WHETHER WE KNOW OR HAVE REASON TO KNOW OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES MAY NOT ALLOW EXCLUSION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES AND SO THE FOREGOING EXCLUSION MAY NOT APPLY TO YOU. The version of PM Patrol is distributed under a Software License Agreement which is included with this version of PM Patrol and available for preview without registration required. If you have any questions about your rights or responsibilities concerning the use of this product please contact: WallyWare 2210 Kingston Drive Wheaton, Illinois 60187 USA Internet E-Mail: wally@interaccess.com Internet WWW: http://homepage.interaccess.com/~wally Phone: 708-510-7412 (630-510-7412 after 7/96) Fax: 708-690-8893 (630-690-8893 after 7/96) ═══ 2. Introduction ═══ PM Patrol(tm) PM Patrol is robust, yet easy to use resource monitoring and management software for OS/2 version 2.1+ and all versions of OS/2 Warp. Allow me to introduce PM Patrol and describe some quick-hits to help you get going. This introduction is brief, but important. You can ALWAYS get the latest version of PM Patrol from our WallyWare Internet Web site at http://homepage.interaccess.com/~wally and send Internet e-mail to wally@interaccess.com. To identify the current version, the licensed name, and serial number for this copy of PM Patrol, refer to "Product Information" accessable from several PM Patrol menus. The serial number is necessary when seeking technical support from WallyWare. PM Patrol is designed to run all the time, from bootup to shutdown. Always visible and accessible, PM Patrol offers quick access to many different monitors and related utilities; Helping You Manage the Power of OS/2 PM Patrol allows you to monitor and track several different resources of your OS/2 system. These resources are presented to you in a very unintrusive and meaningful display providing you insight into current system activities. The appearance of PM Patrol has maintained the attitude that this tool should be visible, yet not use valuable desktop space. In order to accomplish this, PM Patrol provides a Status Line at the bottom of your screen which displays the monitors you have selected. In most cases, not all monitors can fit on the Status Line - as expected. But, you can change the font of the Status Line so that more information can fit in. Also, some of PM Patrol's other monitor windows, besides the Status Line, concentrate on categories of resources in OS/2 (ie. Memory). Therefore, you don't necessarily want or need everything on the Status Line. Only those items you want to see all the time. PM Patrol has a broad appeal. The information PM Patrol provides is valuable to a number of audiences including novices, heavy users, and software engineers and developers. Some PM Patrol monitors and utility items are geared more toward software developers, but the majority of PM Patrol is valuable to anyone. PM Patrol is feature rich. For a complete description of PM Patrol features and details, refer to Features and Product Information sections of this on-line help. To see how PM Patrol compares to other OS/2 resource monitor software, refer to the online help section "Comparative Matrix" also under Product Information. Packaged with PM Patrol are several OS/2 32-bit Command Line utilities. These utilities complement the PM Patrol personality and are described in detail in the "Command Line Utilities" section of this on-line help. The on-line help describes all facets of PM Patrol. Whenever you are in the PM Patrol on-line help, you can always view the Table of Contents by selecting "Contents" under the "Options" menu item. The on-line help contains a section called "Trouble Shooting". If you ever experience difficulties or potential problems with PM Patrol, refer to this section of on-line help. It discusses topics of potential difficulty, compatibility, and idiosyncrasies of PM Patrol features. Everyone should read this section. Another on-line help section called "Support", provides basic support information for PM Patrol. To help you get going with PM Patrol right now, the following itemizes quick-hit topics: 1. PM Patrol provides 2 quick ways of getting around. Place the mouse pointer on the PM Patrol Status Line. If the Status Line is located at the bottom of the desktop screen, the mouse pointer changes to let you know your're "talking" to PM Patrol. Otherwise, the mouse pointer remains the same. The left mouse button acts different than the right. 2. From the PM Patrol Status Line, double clicking the left mouse button invokes the PM Patrol "Options" dialog. This dialog allows you to select and/or change PM Patrol Status Line monitors, configuration settings, color and font settings, various OS/2 system settings, and provides an alternative method for accessing PM Patrol "Utility" items. 3. From the PM Patrol Status Line, single clicking the right mouse button invokes the PM Patrol "Utility" popup menu. After you configure PM Patrol to your personal preferences, this "Utility" popup menu will typically become the primary access method to PM Patrol features. 4. The PM Patrol icon in the "Utility" popup menu invokes the Table of Contents for PM Patrol help. 5. When invoked, the "Utility" popup menu is intelligent based on the location of the mouse pointer within the PM Patrol Status Line: a. If the mouse pointer is within 1 inch of the LEFT side of the Status Line (leftmost 1 inch on VGA), the Utility popup menu will automatically display the PM Patrol Program List for quick access to your favorite programs. b. Similarly, if the mouse pointer is within 1 inch of the RIGHT side of the Status Line, the Utility popup menu will automatically display the PM Patrol Desktop List for quick access to commonly used OS/2 WorkPlace Shell folders. c. Otherwise, the Utility popup menu is displayed with the default menu item being PM Patrol Process Monitor option. From all of us at WallyWare, Thank you for choosing PM Patrol and enjoy... ═══ 3. Hardware/Software Requirements ═══ PM Patrol carries the following requirements, some of which are options to PM Patrol: 1. PM Patrol requires IBM OS/2 version 2.1 or higher. 2. Multmedia features requires IBM MMPM/2 for OS/2 be installed. 3. Network monitoring features requires IBM LAN Requester be installed on the local workstation. NetWare for OS/2 is not currently supported. 4. Internet Connect-Time feature requires modem connection using the PPP or SLIP protocols of IBM's Internet Access Kit, or the In-Joy dialer available at http://www.belle.dk/~bj/dialer.html. 5. PM Patrol's Free Memory algorithm requires a 32-bit disk controller for memory configurations with more than 16 MB. Strict ISA bus architectures found on most 386 class computers are most likely equipped with 16-bit disk controllers. ═══ 4. Installation ═══ To install PM Patrol, run the INSTALL.EXE program from the distribution diskette. The PM Patrol installation prompts you for a number of items and will install all necessary files into a subdirectory of your choice for the PM Patrol program files. The installation program also asks you if you want to create the OS/2 Desktop objects and "shadow" copy of PM Patrol in your OS/2 "Startup Folder". Refer to the OS/2 WorkPlace Shell user guide for any additional help regarding the Startup Folder. If you are using the real-time Data Collection Facility APIs, append the installation path used for PM Patrol to the following statements in your CONFIG.SYS file: 1. "LIBPATH" statement for the API DLL (PMPAPI.DLL). 2. "LIB" statement for the API import library (PMPAPI.LIB). 3. "INCLUDE" statement for the API C/C++ header (PMPAPI.H). If you are using the real-time Debug Facility, append the installation path used for PM Patrol to the following statements in your CONFIG.SYS file: 1. "LIBPATH" statement for the API DLL (DBUGAPI.DLL). 2. "LIB" statement for the API import library (DBUGAPI.LIB). 3. "INCLUDE" statement for the API C/C++ header (DBUG.H). After PM Patrol is installed and the first time you run it, the "Product Information" dialog appears along with the "Product Activation" dialog. This is your opportunity to enter your Name and the Serial number for your copy of PM Patrol. It is VERY important that you enter the Serial number correctly. If you make a mistake, select "Register" from the "Product Information" dialog and try again. Once entered, this information is saved. Note: If you want to move PM Patrol to another machine, repeat the installation process along with entering your Name and Serial number again. PM Patrol contains a few STARTUP command line options: 1. "-Q" is used to omit the PM Patrol logo window at startup. When specified, the little PM Patrol logo window at startup will NOT be displayed. 2. "-H" is used to start PM Patrol in a HIDDEN state. This is advantageous for some users - particularly when the user is only interested in the DCF component. Use the OS/2 Window List to "unhide" the window. This also lends itself to workstations which are used exclusively for real-time operations and/or data acquisition and wish to use the Logger component of PM Patrol. When enabled, any selected Auto-Start monitor windows in PM Patrol (ie. Memory, Process, Network, etc.) will not be started - with the exception of auto-starting the Debug or Logging facilities. These two items, if selected to auto-start, will be started as usual. 3. "-S" is used to start PM Patrol in SECURED state. When enabled, PM Patrol does not appear in the OS/2 Window List and is not able to be "killed". The user MUST close PM Patrol via the normal PM Patrol mechanism. "Secured" mode is provided primarily to complement the PM Patrol password security offered. 4. "-W" is used to keep PM Patrol windows from appearing in the OS/2 Window List. This is an alternative option to "-S" but acts only on Window List access. 5. "-C" can be used to put PM Patrol in a "time critical" priority class for a high level of responsiveness. By default, the main PM Patrol thread operates in a "foreground" priority class and is adequate for most systems. Where PM Patrol and it's DCF readings require absolute timing, this option can be used. Typically, this option lends itself to workstations used for real-time purposes or benchmarking applications which are CPU intensive. Using this startup option may be too aggressive for low-end systems (i386 or most SX CPUs). Furthermore, where seamless DOS+Windows programs are used often, this startup option should be avoided due to the nature of performance issues associated with VDMs (Virtual DOS Machines) under OS/2. 6. "-N" is used when you wish to disable the PM Patrol Network Monitoring facility. By default, this option is enabled. When disabled, no network I/O traffic monitoring is performed and this feature within PM Patrol is made inaccessible. 7. "-P" is used when you wish to disable the PM Patrol Port Monitoring facility. By default, this option is enabled. When disabled, no port monitoring is performed and this feature within PM Patrol is made inaccessible. When both HIDDEN and SECURED are enabled, these two parameters cause PM Patrol to operate in complete detached mode and 100% secured from user interaction and intervention. This mode of operation lends itself to LAN administrators and real-time operations who wish to monitor workstations using the DCF and Network components of PM Patrol without involving the workstation user. ═══ 4.1. Uninstall ═══ To Uninstall PM Patrol from your system: 1. Exit PM Patrol if currently active. 2. Delete the PM Patrol folder from the OS/2 Desktop. 3. If you selected PM Patrol to startup automatically via the OS/2 desktop "Startup" folder, then delete the program object from this folder as well. 4. Delete the PM Patrol directory (i.e. C:\PMP) and all the files within the directory. Note: PM Patrol does not modify your CONFIG.SYS file. Unless you make changes to your CONFIG.SYS to use PM Patrol's programming APIs, there are no modifications necessary to CONFIG.SYS for removing PM Patrol. ═══ 5. Order and Pricing ═══ Thank you for choosing PM Patrol. You may order by credit card, check or money order, SWREG via CompuServe, or via purchase order. VISA, American Express, Mastercard, and Discover are welcome. Corporate site licenses available and negotiated based on quantity. PM Patrol pricing is $29 for a single copy, $15 for the upgrade (from versions 2.x/3.x), $110 for a 5-Pack, and $400 for a 25-Pack. All pricing represented in US dollars. Once you order PM Patrol, you will be sent via e-mail or Air Mail a product serial number to use with PM Patrol. When you receive the serial number, enter it into the PM Patrol Product Registration window. This is accessed from PM Patrol's Product Information dialog window. Enter your name or company name along with the serial number provided. Several purchasing methods are described below. Please use the one most convenient for you. You may purchase directly from WallyWare or take advantage of PM Patrol's resellers: 1. In the United States and Canada, look to BMT Micro at 800-414-4268 or PsL at 800-242-4775 2. In the United Kingdom, look to OneStop Software at +44 117-985-3370 or 0117-985-3370 (in UK) 3. In Australia, look to Sentience Software at +61 49-57-7487 =============================================================== Ordering via Purchase Order =============================================================== Mail, e-mail, or fax a purchase order along with the bill-to and ship-to address. An invoice will be sent to the bill-to address. Remember to provide a Purchase Order number. If possible, please complete the order form (ORDER.FRM) included with the PM Patrol product. Mail: WallyWare 2210 Kingston Drive Wheaton, IL 60187 USA E-Mail: wally@interaccess.com Fax: 708-690-8893 (630-690-8893 after 7/96) =============================================================== Ordering via Check or Money Order =============================================================== Personal checks are limted to US and Canada only. Bank drafts and money orders are without limitation. Complete the following registration form below and send it along with your payment to: WallyWare 2210 Kingston Drive Wheaton, IL 60187 USA Product: PM Patrol for OS/2 Quantity: ___ Single $29 ___ 5 Pack $110 ___ Upgrade $15 (from 2.x/3.x) ___ 25 Pack $400 Name: ____________________________________________________ Address: ____________________________________________________ ____________________________________________________ City: ____________________________________________________ State: _____ Zip: _________ Country: __________________ Internet Id: ___________________________________________ CompuServe Id: ___________________________________________ America Online Id: ___________________________________________ Comments? ____________________________________________________ ____________________________________________________ Where you obtained PM Patrol? _______________________________ =============================================================== Ordering via CompuServe SWREG =============================================================== CompuServe members may register PM Patrol via GO SWREG: PM Patrol (4.x Single Copy) Registration Id: 8991 PM Patrol (4.x Upgrade Only) Registration Id: 9016 Previous registration will be verified by WallyWare. This upgrade only applies to registered 2.x and 3.x users. =============================================================== Ordering via Credit Card - PsL Service =============================================================== MasterCard, Visa, American Express, and Discover orders for PM Patrol may be placed through PsL, a credit card order taking and software registration service. Available Monday-Friday. Voice: 800-242-4775 or 713-524-6394 7am - 6pm CST Monday-Thursday 7am - 12pm CST on Fridays, except holidays. Fax: 713-524-6398 E-Mail: 71355.470@CompuServe.com Mail: Credit card orders can also be mailed to PsL at: P.O. Box 35705, Houston, TX 77235 USA. The following is needed by PsL for credit card order processing. Be sure to specify your e-mail account if you have one. PsL notifies WallyWare within 24 hours after receiving your order so a PM Patrol product serial number can be generated and sent to you promptly. Product Id: 14363 (PM Patrol) Quantity: ____ Single $29 ____ 5-Pack $110 ____ Upgrade $15 ____ 25-Pack $400 Credit Card: [_] MC [_] VISA [_] AMEX [_] Discover Credit Card Number: __________________________________________ Expiration Date: __________________________________________ Name On Card: __________________________________________ Billing Address: __________________________________________ __________________________________________ __________________________________________ Internet Id: __________________________________________ CompuServe Id: __________________________________________ America Online Id: __________________________________________ Please note: WallyWare CAN NOT be reached at the numbers above. These numbers are for PsL - CREDIT CARD ORDERS ONLY. Any questions about the status of the shipment of an order, refunds, registration options, product details, technical support, volume discounts, dealer pricing, site licenses, etc., must be directed to WallyWare. =============================================================== Ordering via Credit Card - BMT Micro Service =============================================================== MasterCard, Visa, American Express, and Discover orders for PM Patrol may be placed through BMT Micro, a credit card order taking and software registration service. Available Monday-Friday. Voice: 800-414-4268 (Monday - Friday) Fax: 910-350-2937 E-Mail: orderes@bmt.wilmington.net The following is needed by BMT for credit card order processing. Be sure to specify your e-mail account if you have one. BMT Micro notifies WallyWare within 24 hours after receiving your order so a PM Patrol product serial number can be generated and sent to you promptly. Product Id: PM Patrol Quantity: ____ Single $29 ____ 5-Pack $110 ____ Upgrade $15 ____ 25-Pack $400 Credit Card: [_] MC [_] VISA [_] AMEX [_] Discover Credit Card Number: __________________________________________ Expiration Date: __________________________________________ Name On Card: __________________________________________ Billing Address: __________________________________________ __________________________________________ __________________________________________ Internet Id: __________________________________________ CompuServe Id: __________________________________________ America Online Id: __________________________________________ Please note: WallyWare CAN NOT be reached at the numbers above. These numbers are for BMT Micro - CREDIT CARD ORDERS ONLY. Any questions about the status of the shipment of an order, refunds, registration options, product details, technical support, volume discounts, dealer pricing, site licenses, etc., must be directed to WallyWare. =============================================================== Receiving your PM Patrol Product Serial Number =============================================================== You're Product Serial number is assigned by WallyWare after purchasing PM Patrol. After you receive this code, enter it, (along with your name) in PM Patrol's Product Registration window. E-Mail shipment: For E-Mail users on Internet, CompuServe, or America Online your PM Patrol product serial number will be sent via e-mail within 24 hours after receipt of your PM Patrol purchase. Air-Mail shipment: For users without e-mail access, WallyWare will send via First Class Air mail a 3 1/2 diskette containing the latest version of PM Patrol and an invoice with your product serial number. Please allow 5-10 days for shipping. PM Patrol is posted on several popular sites. The following sites receive uploads of PM Patrol directly from WallyWare. If you have a more convenient ftp or download site, let us know. The file name is typically PMPxyz.ZIP where "x" represents the major release number, "y" represents the minor release number, and "z" represents an optional fix release as an alphabetic character. For example, PMP41.ZIP or PMP41a.ZIP. On CompuServe, the PM Patrol file will always be called PMPATROL.ZIP. WWW: http://homepage.interaccess.com/~wally WWW: http://www.wilmington.net/bmtmicro WWW: http://www.os2.hammer.org/OS2 FTP: hobbes.nmsu.edu (/os2/wpsutil) FTP: ftp-os2.cdrom.com (/pub/os2/sysutil) BBS: Chicago online OS/2 (708-895-4042 8N1) BBS: Peter Norloff's OS/2 Shareware (703-385-4325 8N1) CompuServe (OS2BVEN Forum, Shareware Library) America Online (OS/2 Forum) You can ALWAYS get the latest version of PM Patrol from our WEB site on the internet at http://homepage.interaccess.com/~wally Thank you for choosing PM Patrol. And, enjoy... Dave Wallenberg, WallyWare Internet E-Mail: wally@interaccess.com Internet WWW: http://homepage.interaccess.com/~wally Phone: 708-510-7412 (630-510-7412 after 7/96) Fax: 708-690-8893 (630-690-8893 after 7/96) ═══ 6. Support ═══ Sales and Technical Support for PM Patrol and other WallyWare products are available through phone, e-mail, and fax. In most cases, phone support will require you to leave a message for WallyWare. We will return domestic US calls as soon as possible usually within 48 hours. E-mail support can usually count on response within 48 hours. PM Patrol is posted to and can be downloaded from the following electronic repositories. The file name is typically PMPxyz.ZIP where "x" represents the major release number, "y" represents the minor release number, and "z" represents an optional fix release as an alphabetic character. For example, PMP41.ZIP or PMP41a.ZIP. On CompuServe, the PM Patrol file will always be called PMPATROL.ZIP. WWW: http://homepage.interaccess.com/~wally WWW: http://www.wilmington.net/bmtmicro WWW: http://www.os2.hammer.org/OS2 FTP: hobbes.nmsu.edu (/os2/wpsutil) FTP: ftp-os2.cdrom.com (/pub/os2/sysutil) BBS: Chicago online OS/2 (708-895-4042 8N1) BBS: Peter Norloff's OS/2 Shareware (703-385-4325 8N1) CompuServe (OS2BVEN Forum, Shareware Library) America Online (OS/2 Forum) You can ALWAYS get the latest version of PM Patrol from our WEB site on the internet at http://homepage.interaccess.com/~wally WallyWare 2210 Kingston Drive Wheaton, Illinois 60187 USA Internet E-Mail: wally@interaccess.com Internet WWW: http://homepage.interaccess.com/~wally Phone: 708-510-7412 (630-510-7412 after 7/96) Fax: 708-690-8893 (630-690-8893 after 7/96) ═══ 7. Product Information ═══ This section describes what PM Patrol is and what it offers ═══ 7.1. What is It? ═══ PM Patrol is robust yet easy to use resource monitoring and management software, for OS/2 versions 2.1 and higher. The monitors, frequency of resource samples, preferences, size and placement of windows are user selectable allowing complete customization. Always accessible, PM Patrol extends the OS/2 desktop by providing insight into current system activities and resource utilization. The quick-access utility items include a program launcher, program scheduler, print/spooler functions, Fast Find, and much more. The numerous resource monitors that PM Patrol provides can be logged for later review or accessed dynamically with the Data Collection Facility APIs. Recorded as text, the logged data can be manipulated using tools such as Rexx, AWK, GREP, and custom C/C++ programs. The appearance of PM Patrol has maintained the attitude that the tool should be visible, yet not use valuable desktop space. As a result, the main Status Line is displayed at the bottom of the display (as default). ═══ 7.2. Why do I need it? ═══ PM Patrol offers numerous and intuitive selections for monitoring OS/2 status and activities: 1. Display current Date/Time with optional synchronization to network server. 2. System up-time for workstation 3. Internet Connect-Time for workstation (requires IBM's Internet Access Kit). 4. Network user ID, Domain, server, and network I/O traffic for the workstation 5. Processes, threads, DLLs, drivers, and shared memory activity 6. Event monitoring and notification of critical OS/2 resources and thresholds. 7. CPU activity per Process and Thread in graphical view 8. Complete drive summary and detail information with graphical utilization 9. Local or remote print spooler jobs on a per queue basis 10. Disk Drives on-line (including network drives) 11. Free space for selected drives (up to 6 drives including network drives) 12. OS/2 swap activity 13. Identify system levels for OS/2 component installed 14. OS/2 free real and virtual memory activity 15. Active number of OS/2 processes and threads 16. CPU utilization (current vs. rolling average over last 1 minute) 17. Battery status for mobile computers 18. Graphical views of memory, CPU usage, and swapping PM Patrol contains a suite of robust utility and OS/2 desktop functions: 1. Robust monitoring of OS/2 processes and threads (Process Monitor window) with ability to monitor CPU utilization per process, memory used per process, process priorities, and "kill" ill-behaved programs. 2. Process Meter features provides unattended operation and automatic collection of process statistics for identifying duration, CPU consumption, and instances over a range of time. 3. Quick-access program launcher with priority control 4. Quick-access program scheduler with priority control for timed events 5. Network Monitor and I/O statistics for workstation 6. Summary and detailed information of drives 7. Summary and detailed information of OS/2 configuration and environment 8. Changing the mouse and wait pointers in OS/2 9. Fast Find files (pattern, size, last access, attributes, network drives) 10. Fast Help for all OS/2 and Windows help information files on-line 11. Fast access to WorkPlace Shell object classes 12. Find duplicate files 13. Drive utilization and analysis with graphical distribution 14. Fast Format diskettes 15. Print queue management 16. Identify system levels for OS/2 component installed 17. Minimize all visible windows (and restore all minimized windows) 18. Security to protect PM Patrol settings and configuration for stand-alone and network use 19. Suspending power for mobile computers (sleep mode) 20. Suspending PM Patrol monitors 21. Forced OS/2 shutdown 22. Changing mouse and wait pointers for all display types 23. Set system date and time 24. Several command-line utilities such as Fast Find and Find Duplicate files, Print Spooler Management, and more 25. API interfaces to retrieve real-time statistics from PM Patrol ═══ 7.3. Comparative Matrix ═══ ===================================================================== Item PM Patrol SPM/2 CpuMon Pegasus ===================================================================== Low memory requirements x x Low CPU requirements x x x Network monitoring (1) x CPU monitoring x x x x Magnified CPU monitoring x LPT Port monitoring x x x COM Port monitoring x x Process monitors x x x Free Memory monitor x x x x Virtual Memory monitor x x Resident Memory monitor x x Memory Per Process monitor x x Swap free and size monitor x x x x Drive monitoring x x x x Drive Cache monitors (2) x x Drive utilization mapping x Power Mgmt Monitoring and Control x Inconspicuous monitor display x Real-time Data Collection Facility x x x C/C++ API interfaces x x x Quick access program Launcher x Build-in program Scheduler x Line graph displays x x x Selective logging x x x Print spooler mgmt and control x System and Configuration Info. x Performance tuning guide x Desktop/WorkPlace Shell utilities x Software testing tools x Event Monitoring w/Alarms x Multimedia Enabled x Internet Access Monitoring x Fast access to system help files x Robust Process Metering x Low cost x (1) LAN Server support only (2) HPFS-386 only ═══ 8. How do I ? ═══ This section describes how to do things in PM Patrol that may not be obvious. ═══ 8.1. Set fonts ═══ You can select "Font" from the PM Patrol "Options" dialog and select a font for the PM Patrol main Status Line. The font of choice for the PM Patrol Status Line is the "System VIO" family. Or, use the Font Palette in the OS/2 "Setup" folder by dropping a font on the PM Patrol Status Line. All PM Patrol settings are automatically saved when you exit PM Patrol. Note: PM Patrol supports the ability to have a different font and color scheme for each window - including the main Status Line. ═══ 8.2. Display Different Drives ═══ By default, PM Patrol maps drives 1 through 6 on the Status Line to drives C through H. This drive mapping can be changed to any desired combination. 1. From the PM Patrol Status Line, right-click the Status Line. 2. Select the "Drives" menu option 3. Then select the "Status Line" option. 4. This will display a menu identifying the current drive mappings assigned. Select the PM Patrol drive number you wish to change. 5. A mini dialog will popup displaying current drives on-line and accessible. Choose which drive to map. 6. To tell PM Patrol to show the drive on the Status Line select the drive number in PM Patrol's "Status Line Monitors" in the "Options" dialog. 7. This information is saved and remembered by PM Patrol. When a drive being monitored goes off-line, PM Patrol displays a "?" in place of the free space for the drive to inform you the drive is off-line. This is more common when monitoring remote drives on a network. ═══ 8.3. Set Colors ═══ Use the "Colors" dialog. This can be accessed via the PM Patrol Setting option on the "Options" dialog. You can control both foreground and background RGB colors with this mechanism. Or, use the Color Palette in the OS/2 "Setup" folder by dropping a color selection on the PM Patrol Status Line. All PM Patrol settings are automatically saved when you exit PM Patrol. ═══ 8.4. Move the Status Line ═══ There are two methods for moving the main Status Line. All PM Patrol settings and window positions are automatically saved when you exit PM Patrol. a. Holding the right mouse button down, drag the Status Line up or down, it will automatically keep the width of the Status Line within the boundaries of your desktop screen width. a. Single click with both mouse buttons (Chord click) on the PM Patrol Status Line. This will enable the title bar to the Status Line. b. Select the title bar and hold the mouse button while dragging the Status Line to the desired position. c. Chord click the Status Line again (or select "Hide Controls" from the System Menu box) to hide the title bar. d. This will allow you to move the Status Line off the desktop boundaries for those of you who wish to truncate the left of right side of the Status Line. ═══ 8.5. Mouse Control with PM Patrol ═══ Double click the left mouse button on the PM Patrol Status Line to get to PM Patrol Options. Single click the right mouse button on the PM Patrol Status Line for quick access the PM Patrol utilities menu. Single click the left and right mouse buttons (Chord click) on the PM Patrol Status Line to display the PM Patrol title bar and system menu. This allows you to move the PM Patrol Status Line to a desired position. Chord click again to hide the title bar, or select the "System Menu" box on the title bar and then select "Hide Controls". ═══ 8.6. Start PM Patrol Minimized/Hidden ═══ PM Patrol can be started with a command line option ("-H") to start it in a HIDDEN state. This is advantageous for some users - particularly when the user is only interested in the DCF component. Use the OS/2 Window List to "unhide" the window. This also lends itself to workstations which are used exclusively for real-time operations and/or data acquisition and wish to use the Logger component of PM Patrol. Combined with the "Start Secured" option, PM Patrol to operates in complete detached mode and 100% secured from user interaction and intervention. The only way to terminate PM Patrol is an OS/2 Shutdown. This mode of operation lends itself to LAN administrators who wish to monitor workstations using the DCF and Network components of PM Patrol without involving the workstation user. ═══ 8.7. Start PM Patrol Secured ═══ PM Patrol can be started with a command line option "-S" to start PM Patrol in SECURED state. When enabled, PM Patrol does not appear in the OS/2 Window List and can not therefore be terminated by the user. The user MUST close PM Patrol via the normal PM Patrol mechanism. Combined with the "Start Hidden" option, PM Patrol to operates in complete detached mode and 100% secured from user interaction and intervention. The only way to terminate PM Patrol is an OS/2 Shutdown. This mode of operation lends itself to LAN administrators who wish to monitor workstations using the DCF and Network components of PM Patrol without involving the workstation user. ═══ 8.8. Uninstall PM Patrol ═══ To Uninstall PM Patrol from your system: 1. Exit PM Patrol if currently active. 2. Delete the PM Patrol folder from the OS/2 Desktop. 3. If you selected PM Patrol to startup automatically via the OS/2 desktop "Startup" folder, then delete the program object from this folder as well. 4. Delete the PM Patrol directory (i.e. C:\PMP) and all the files within the directory. ═══ 8.9. Use PM Patrol without a mouse ═══ To access PM Patrol without a mouse, use Ctrl-Esc to get to the OS/2 Window List. Then, select the "PM patrol Status Line". At this point, you can: 1. Press F11 to invoke the PM Patrol Utility Popup menu 2. Press F12 to invoke the PM Patrol Options window Once you have access to the Utility Popup, you can go anywhere within PM Patrol without a mouse. ═══ 9. Options ═══ This section describes various options and configuration settings that may be selected for PM Patrol. ═══ 9.1. System ═══ The System section provides the ability to view and change several OS/2 environmental facets. This can be accessed from the PM Patrol "Options" dialog. ═══ 9.1.1. System Level ═══ The System Level option launches the OS/2 SYSLEVEL.EXE utility and displays the current release and CSD level for the OS/2 components installed on your system. ═══ 9.1.2. Set Date/Time ═══ The Set Date/Time option provides a small dialog for changing the OS/2 system date and/or time. Input is fully edited for valid dates including leap-year and you are notified of errors. The Status Line Date/Time is updated to reflect the new date/time. ═══ 9.1.3. Mouse Pointer ═══ The Mouse Pointer option allows you to change the current mouse pointer type. Using the OS/2 Icon Editor, you can create your own POINTER files. This option provides a bigger pointer for SVGA and XGA systems. On XGA systems, if you change the default pointer, the pointer may occasionally disappear. This is most likely caused by the IBM OS/2 XGA drivers and is repaired in OS/2 2.1 with the 2.11 CSD. Note: After selecting a new pointer, DO NOT delete, move, or rename the pointer file without changing the Mouse Pointer via PM Patrol FIRST. OS/2 looks for this at IPL. If it is not found at OS/2 bootup, OS/2 will hang. So put the pointer file in a safe place on a not removable media type and backup INI files. Select "Reset" to reset back to the original pointer. ═══ 9.1.4. Wait Pointer ═══ The Wait Pointer option allows you to change the current wait pointer type. Typically, this is the OS/2 time clock when the system is busy. Using the OS/2 Icon Editor, you can create your own POINTER files. This option was added to provide a bigger pointer for SVGA and XGA systems. On XGA systems, if you change the default pointer, the pointer may occasionally disappear. This is most likely caused by the XGA drivers. After selecting a new pointer, DO NOT delete, move, or rename this file without performing this process as well. OS/2 looks for this at IPL. So put the pointer file in a safe place on a not removable media type and backup INI files. Select "Reset" to reset back to the original pointer. ═══ 9.2. Settings ═══ The Settings section provides the ability to view, change, and permanently change PM Patrol configuration items. This can be accessed from the PM Patrol "Options" dialog. ═══ 9.2.1. Reset All Settings ═══ The Reset All Settings option resets all PM Patrol to options to their original defaults. This includes colors, window positions, fonts, monitor items on the Status Line and PM Patrol Logger, and Process Meter data. ═══ 9.2.2. General Settings ═══ General Settings is broken-out into the following groups: 1. "Startup" options and windows that get started when PM Patrol is started 2. "Miscellaneous" options 3. "Spooler" options for local or remote print spool monitoring 4. "Editor" and "Viewer" programs used by PM Patrol The following items discuss Startup function: 1. Enable Process Monitor Window to have this facility launched when PM Patrol starts. 2. Enable Memory Monitor Window to have this facility launched when PM Patrol starts. 3. Enable Network Monitor Window to have this facility launched when PM Patrol starts. 4. Enable Port Monitor Window to have this facility launched when PM Patrol starts. 5. Enable Drives Monitor Window to have this facility launched when PM Patrol starts. 6. Enable Event Monitor Window to have this facility launched when PM Patrol starts. 7. Enable Activity Monitor Window to have this facility launched when PM Patrol starts. 8. Enable Debug Facility to have this facility start when PM Patrol starts. 9. Enable Logging Facility to have this facility start when PM Patrol starts. 10. Enable Reset Process Meter to have the Process Meter data base initialized when PM Patrol starts (typically each time you reboot your system). When this settings is not enabled, PM Patrol keeps track of Process Meter statistics across each invocation of PM Patrol, thus providing accumulative statistics for you until you manually reset the Process Meter data base. This option is enabled by default. Therefore, the meter will be initialized each time you start PM Patrol. The following items discuss Miscellaneous items: 1. Sound Bites and Volume option enables or disables the playing of multimedia WAV files upon various PM Patrol events. This option is only applicable to systems that are Multimedia enabled with MMPM/2 for OS/2. The Volume control allows you to adjust the volume for PM Patrol's WAV sound bites independantly from the OS/2 "System Sounds" volume control. The default is 50% and may require adjustment for your system. PM Patrol stores it's WAV files in a subdirectory called "WAV" and is located under the PM Patrol installation directory. Some events include: a. When an error occurs (pmperr.wav). b. When free disk space is low (pmpfdisk.wav). c. Each time you connect (pmpin.wav) or disconnect from (pmpout.wav) the Internet when using IBM's Internet Access Kit. d. Each time you Logon (pmpin.wav) or Logoff (pmpout.wav) when using IBM's LAN Server. e. When you kill a program from the Process Monitor window or Fast Format a floppy diskette (pmpshred.wav). f. When you refresh the window contents manually (pmprefr.wav). g. When you add (pmpadd.wav) or delete (pmpshred.wav) items from a window. h. When you delete PM Patrol or Debug log files (pmpshred.wav). i. When the PM Patrol Status Line, Activity Monitor, or PM Patrol's CPU monitor are suspended (pmppause.wav) and resumed (pmpreset.wav). j. When using PM Patrol's print spooler management functions. This includes purging queues (pmpshred.wav), releasing queues (pmpreset.wav), and holding queues (pmppause.wav). k. When PM Patrol windows are copied to the clipboard, printed, or saved to a file (pmprpt.wav). l. When printing to local LPT1, LPT2, or LPT3 has completed spooling to printer (pmpprint.wav). m. When remaining battery life drops below specified threshold (pmpbat.wav). n. When available virtual memory falls below specified threshold (pmpvram.wav). o. When the OS/2 swap file grows at any time (pmpgswap.wav). p. When available OS/2 swap space falls below the specified threshold (pmpfswap.wav). q. When average CPU exceeds specified threshold (pmpcpu.wav). r. When PM Patrol logging is stopped or completed (pmpdone.wav). s. When various "Reset" options are selected (pmpreset.wav). 2. Process Metering option enables or disables the Process Meter feature which provides ongoing monitoring of process metrics and statistics for analyzing duration, CPU effort, instances, execution dates, and more. Refer to the "Monitors" on-line section for details. 3. Confirmations option enables or disables PM Patrol from asking you for confirmation upon various events such as killing processes via the Process Monitor window. There are cases where PM Patrol will ignore this option and request confirmation for your own protection, even if this option is turned off. 4. Animated Windows option enables or disables the appearance of PM Patrol windows "zooming" in and out when windows are opened and closed. 5. Idle-Time Searches option controls the search priority for "Fast Find", "Drive Map", and "Fast Help" operations. When enabled, these operations only get OS/2 time slices when there is inactivity (idle) within your system. 6. Auto-Save Profile option will, when enabled, automatically save the PM Patrol profile and statistics at the frequency specified. The frequency is specified as minutes with a range of 1 minute to 8 hours, default 15 minutes. This facilitates the integrity for the PM Patrol real-time statistics in the event of a system hang. If not enabled, PM Patrol will automatically save the profile statistics, but only when PM Patrol is shutdown. Note: With this option turned on, power-managed computers will not automatically power-down the disk drive(s) because of the disk write generated from this option. This disk write is not buffered and therefore commits to disk immediately. 7. Lock Status Line Position option locks-in the PM Patrol Status Line position from accidently dragging and moving. 8. Reflect Free Swap in VRam. This option provides the ability to have the Free Virtual Memory calculation reflect (or not reflect) free OS/2 swap space from the swap file (swapper.dat). When enabled, the Free Virtual RAM (VRam) calculation will reflect a more accurate and actual reading that factors in available swap pages. Please be aware that enabling this option will cause the Free VRam reading to be inconsistent with OS/2 System Information Tool for "Total Available Memory". 9. Reflect Reserved in VRam. This option provides the ability to have the Free Virtual Memory calculation reflect (or not reflect) the reserved disk space as specified in the "swappath" directive of your OS/2 Config.Sys. When enabled, the Free Virtual RAM (VRam) calculation will reflect a more accurate and actual reading that factors in this reserved disk space. Please be aware that enabling this option will cause the Free VRam reading to be inconsistent with OS/2 System Information Tool for "Total Available Memory". 10. Reflect Free RAM in VRam. This option provides the ability to have the Free Virtual Memory calculation reflect (or not reflect) free Real memory in the calculation of Free/Used Virtual memory. Ones definition of Virtual Memory may or may not include Real Memory into the calculation. This option provides you the ability to select your choice of definition. When enabled, the Free Virtual RAM (VRam) calculation will result in a very different value, as compared to disabled, and will fluctuate often as Real RAM is used and freed. The opposite will occur when this option is disabled. Please be aware that disabling this option will cause the Free VRam reading to be inconsistent with OS/2 System Information Tool for "Total Available Memory". 11. Message Popup Seconds option allows you to define how long (seconds) PM Patrol should display popup messages. The default is 4 seconds. 12. Auto-Popup Menu option causes the PM Patrol Status Line popup menu to automatically popup when the mouse is moved over the Status Line within 1 inch of the right or left side of the screen. No mouse click is necessary. Where the mouse pointer is outside of these 1 inch boundaries, PM Patrol behaves normally. This feature is nice for those who want ultra-fast access to PM Patrol features. When enabled, the double-click option off the Status Line is disabled. To access to PM Patrol "Options" window, select it off the popup menu. 13. Bitmap in Popup Menu option enables or disables displaying the PM Patrol bitmap in the Utility Popup menu accessed from the PM Patrol Status Line. 14. The Sync Time with Server option enables or disables synchronization of date and time as compared to the network server currently logged-on to. When enabled and logged-on to a LAN Server, PM Patrol will (every 10 minutes) synchronize the date and time with the LAN Server. This is set off by default. 15. The Check floppy at Shutdown will cause PM Patrol to warn you when PM Patrol is shutdown that there is a floppy diskette mounted in the boot floppy drive. 16. The CPU Magnification provides the ability to magnify actual CPU utilization. The value specified is a multiplier (1x, 2x, ... 25x). Setting magnification to 1 will result in the same value for actual CPU. The magnification can be monitored in either PM Patrol's Status Line or Activity Monitor. By default, this option is not enabled in the Activity Monitor and is set to 5 times (5x) in General Settings. This feature of PM Patrol lends itself to high-end i486 and Pentium based CPUs and allows the ability to "zoom" into CPU usage less than 1 percent. PM Patrol will not report CPU magnification higher than 100 percent. 17. The Battery Calibration option allows you to specify the "zero" value for the mobile computer's battery. The OS/2 APM facilities assume the battery to be 100% new. As the battery ages, the original maximum life of the battery diminishes. Especially for NICad batteries. PM Patrol allows you to specify a "new" maximum life. When set at zero, observe the PM Patrol "Bat" percentage. When your computer informs you the battery is dangerously low (usually several short beeps), observe the percentage that PM Patrol reports. This value becomes the new "zero" point. Select this value in the "Calibration" field in the "General Settings" dialog. Repeat this process every 3-4 months to ensure accurate and reliable battery readings. The following items discuss print Spooler options: 1. The Monitor Remote Queue(s) item allows you to select "local" or "Remote" print queue(s) on a LAN Server and requires IBM LAN Requester be installed on the local workstation. When enabled, the LAN Server currently logged-on to is monitored. PM Patrol automatically recognizes when a new or different server is logged-on to and adjusts the monitoring for that server. When not selected, the local workstation print queues are monitored. This is the default. 2. PM Patrol displays a "?" on the Status Line when it can not poll print spooler data - perhaps when the user is not logged-on to the server. 3. Monitoring a remote print spooler is only applicable if you have LAN Requester installed on your workstation, and you are logged onto the network server. 4. The "Total all Print Queues" option allows you to summarize all print jobs across all queues and report this value. If this option is NOT selected, PM Patrol reports the number of print jobs in each spooler queue along with the status of the queue (h=held or r=released). The Viewer identifies which OS/2 program/utility to use for viewing. PM Patrol uses this for Log viewing and others purposes as they surface in future releases of PM Patrol. The Editor identifies which OS/2 program/utility to use for editing. PM Patrol uses this for the "Fast Find" files facility and other purposes as they surface in future releases of PM Patrol. ═══ 9.2.3. Event Settings ═══ The following items discuss Event monitor options. The Sound Bites for the following events will only occur when "Sound Bites" is enabled in the "General Settings" window and MMPM/2 is installed on your system. When these selected events occur, you will be notified (if enabled) at the frequency specified under "Event Frequencies". By default, you are notified every 5 minutes after the event threshold has been exceeded and sustained for 1 minute. Notification occurs in the form of Sound Bites (if enabled), speaker sounds, and/or short popup messages. For systems which are not multimedia enabled, PM Patrol will sound a short audible alarm when event thresholds are exceeded. When you start-up PM Patrol, events will not occur within the first 15 seconds while PM Patrol calibrates itself and initially samples all resources. PM Patrol events include: 1. Battery below ... option will cause PM Patrol to notify you when remaining battery life drops below the percentage specified. This option is available only for mobile computer systems with OS/2's Advanced Power Management. 2. Avg CPU above ... option will cause PM Patrol to notify you when average CPU exceeds the percentage specified. 3. Virtual RAM below ... option will cause PM Patrol to notify you when available virtual memory falls below the amount specified. This amount is represented in terms of Megabytes (MB). 4. Free Swap below ... option will cause PM Patrol to notify you when available swap space falls below the percentage specified. 5. Free RAM below ... option will cause PM Patrol to notify you when available RAM falls below the percentage specified. This option is not recommended for use by systems with less than 16 MB of memory. 6. Swap File above... option will cause PM Patrol to notify you when the OS/2 swap file (SWAPPER.DAT) exceeds the size specified. This size is specified in terms of megabytes (MB). 7. Drive 1-6 below... option will cause PM Patrol to notify you when free disk space falls below the amount specified. This amount is represented in terms of megabytes (MB). The drive to be monitored must be selected in the list box on the main "Options" dialog. You will not be able to select event monitoring for the desired drive until this selection is done. PM Patrol provides three different Notification Methods when event thresholds are exceeded: 1. The Messages option will cause PM Patrol to notify you in the form of a brief message when the above events occur. This message is a small pop-up window that temporarily grabs the foreground for about 3-4 seconds. This method is rather obtrusive and will visually interupt what your're currently working on. Each event has a specific message. 2. The Sound Bites option will cause PM Patrol to notify you in the form of multimedia sound effects when the above events occur. These sounds require MMPM/2 and are background. 3. The PC Speakers option will cause PM Patrol to notify you in the form of a short beep when the above events occur. 4. PM Patrol's Data Collection Facility APIs provide a means of real-time event notification. The Notification Frequencies allow you set two important setting which allow you to control how often you are notified once an event threshold is exceeded, and how long must the threshold be exceeded before notificaton occurs. 1. The Sustained State control informs PM Patrol to wait a certain amount of time (seconds) while the threshold is exceeded before notifying you via the methods you have selected. Hence, the threshold has to sustain an exceeded state for the time you specifiy. 2. The Renotification control allows you to select how often you want to be notified after the "Sustained State" has occured. Specifying zero will turn off Renotification. When turned off, you will only be notified once - when the Sustained State is reached. The Event Monitor Window collects ALL selected events - even if you have chosen not to be notified. The last time and the value of the "Sustained State" of the event are reported in this window. ═══ 9.2.4. Logger Settings ═══ The following items discuss Logger Settings: 1. The Log Items allows you to select which PM Patrol monitors you would like to record while logging is active. Once the Logger is active, these options are inaccessible. Stop the Logger to change the "Logger Settings". Note: The Process Detail option provides the ability to have PM Patrol also log process detail information as seen in PM Patrol's Process Monitor window. This additional detail will list all programs that are active along with their process ID (PID) and the CPU used per process. Enabling this will cause the log file size to increase based on the number of processes actively running. 2. The Log Frequency allows you to select the frequency at which PM Patrol logs selected monitor items. Valid values are 1 to 60 seconds (1 minute). 3. The Log Duration allows you to select how long (minutes) to perform logging. Valid values are 1 minute to 1440 (all day). Note: Specifying 1440 minutes enables continuous logging. With this enabled, the log files (primary and backup) get "rolled-over" at midnight. The "Notify when Done" option is ignored when continuous logging is enabled. Note: Worst case disk requirement for all day logging with backup is 16 MB. 1/2 of this when "Backup log File" is not enabled. Note: While continuous logging is active, the primary log file can not be viewed. The backup log file (from the previous day) is always accessible. 4. The Foreground Color and Background Color push-button items allow you to select the PM Patrol Status Line colors when logging is active. The default colors reverse the foreground and background colors. 5. The Backup Log File causes the primary log file to be backed-up each time a "Start Log" is initiated. With this disabled, the primary log file is overwritten. 6. The Notify When Done option provides the ability to have PM Patrol popup a message on the OS/2 Desktop when logging has reached it's completion via the "Log Duration" setting. This is ignored for "Continuous Logging". 7. The Path entry field allows you to specify the path location for both primary and backup log files. Note: The primary and backup log files created by PM Patrol are named "PMPATROL.LOG" for the primary and "PMPATROL.BAK" for the backup log file. Both the primary and backup log files are ASCII. Therefore, they can be viewed and otherwise manipulated using such tools as Rexx, AWK, and GREP. The PM Patrol Logger is designed with special consideration for performance and can be used in a variety of situations: 1. Real-time and time critical. Samples recorded every second. 2. Aggressive. Samples recorded every 2-3 seconds. 3. Casual. Samples recorded every minute. The Logger buffers output to minimize disk write efforts. Worst case, the Logger requires 1 physical disk write for every 10 Log records. Because of the buffering technique used by the Logger, there are no special performance requirements imposed on the user. However, it is recommended that "Lazy Write" be enabled in the OS/2 CONFIG.SYS to improve OS/2 overall disk performance and further minimize the PM Patrol Logging effort. ═══ 9.2.5. Refresh Settings ═══ The following items discuss Refresh Settings for PM Patrol monitors. When setting these controls, try to stagger them so that each item occurs at a different time. The lower the frequency setting for a given monitor, the more timing-accurate the monitor will be. However, this lower frequency also causes PM Patrol to sample the resource more often thus creating more overhead. For i486 and Pentium based systems, setting these frequencies to minimum values will NOT create adverse effects. CPU overhead for PM Patrol is mimimal. The higher the frequency setting for a given monitor, the less timing-accurate and reliable the monitor will be. However, this higher frequency also reduces PM Patrol overhead for i386 based systems. 1. The Network Monitors refresh setting controls how often (seconds) PM Patrol samples network presence, I/O statistics, logon, and workstation status. The Network Monitor window is updated at this frequency as well. 2. The Spool Monitor refresh setting controls how often (seconds) PM Patrol enumerates the total number of print jobs across all print queues. 3. The Drive Monitors refresh setting controls how often (seconds) PM Patrol checks what drives are on-line and how much free disk space exists on each. This does not effect the refresh of the Drives Monitor window which updates every minute. 4. The Swap Monitor refresh setting controls how often (seconds) PM Patrol checks how large the OS/2 swapper file is and how much free swapper space there is. 5. The Activity Monitor refresh setting controls how often (seconds) PM Patrol refreshes the items in the Activity Monitor window. 6. The Memory Monitors refresh setting controls how often (seconds) PM Patrol checks free, virtual, and resident memory. The Memory Monitor window is updated at this frequency as well. 7. The Process Monitors refresh setting controls how often (seconds) PM Patrol refreshes the Process Monitor window, Process Summary information in the PM Patrol Status Line, and Process Meter data collection (when enabled). The other Process Monitor functions do not automatically refresh and are therefore not subject to this refresh control. 8. The User Defined Monitor refresh setting controls how often (seconds) PM Patrol refreshes the User Defined Monitor information in PM Patrol's main Status Line. Using the PM Patrol "DCFUserDefined" API within a C/C++ program, you can format a monitor buffer of your choice. Refer to the API description for DCFUserDefined for details. Note: The CPU effort to collect Process Meter data, although minimal when active, can be negatively influenced by adjusting the "Process Monitors" frequency in PM Patrol's "Refresh Settings" dialog too low - depending on the computer. As a rule of thumb, set the "Process Monitors" frequency to the following, but never lower: 1. 5 seconds for i386 class computers 2. 4 seconds for i486 class computers 3. 3 seconds for Pentium class computers ═══ 9.2.6. Status Line Font ═══ The Status Line Font option allows you to set the display font for the PM Patrol Status Line window. The font of choice for the PM Patrol Status Line is the "System VIO" family. You can also use the Font Palette in the OS/2 "System Settings" folder by dragging the font to the PM Patrol Status Line. ═══ 9.2.7. Status Line Colors ═══ The Status Line Colors option allows you to set the foreground and background colors for the PM Patrol Status Line window. The Color Propagation option informs PM Patrol to use the color settings selected throughout all PM Patrol windows - as opposed to the current OS/2 color definitions. Note: The font of choice for the PM Patrol Status Line is the "System VIO" family. You can also use the Font Palette in the OS/2 "System Settings" folder by dragging the font to the PM Patrol Status Line. ═══ 9.2.8. Security ═══ The Security option allows you to set a password that restricts access to PM Patrol configuration, settings, and monitor items. Simply enter a password and PM Patrol security is enabled. To turn off security, simply remove the password. When enabled, the security will restrict access to: 1. All "Options" dialog functions 2. Changing monitored items from the "Utility" popup menu 3. The Program Settings dialog from the "Utility" popup menu 4. The Scheduler Settings dialog from the "Utility" popup menu 5. PM Patrol Logging functions from the "Utility" popup menu ═══ 9.3. Exit ═══ This option is used to end the PM Patrol program ═══ 9.4. Status Line Options ═══ This section describes PM Patrol's Status Line Options and Graphs available in the "Options" window. The descriptions and application of the individual Status Line Monitors are discussed in detail under the on-line help section called "Status Line". Some of these options may be grayed-out and inaccessible if the related monitor is not selected in the Status Line Monitor list-box. The CPU Average option enables or disables the display of the "rolling average" of CPU activity covering the last 1 minute. This option is accessible only when "CPU Monitor" is selected in "Status Line" monitors. The CPU Magnified option enables or disables the display of CPU magnification as setup in the General Settings. This option is accessible only when "CPU Monitor" is selected in "Status Line" monitors and offers the ability to monitor CPU activity at a very granular level. The Float to Top option enables or disables the PM Patrol Status Line being kept as the "topmost" window on the OS/2 desktop and therefore visible all the time. When obscured by another window, the Status Line will "float" to the top of the desktop - but will not be the active window. Note: Refer to the on-line help section "Trouble Shooting" for idiosyncrasies associated with the "Float to Top" option under OS/2 versions 2.1 and 2.11. The Show Open Files option allows you to include the total number of open files in your OS/2 system as part of the Process Summary monitor. Inverted Real RAM, Virtual RAM, and Swap. By default, PM Patrol shows Swap, Real, and Virtual RAM in terms of "Free" and available resource on the Status Line. These options allow you to "invert" or reverse how the respective monitor and graph is shown on the Status Line to reflect resource taxation similar to PM Patrol's CPU monitor. Note: This option only effects the PM Patrol Status Line and not other windows within PM Patrol or PM Patrol's Logger. The Show Floppies option enables or disables the display of floppy disk drives in the "Drives On-line" monitor. The Show Seconds option enables or disables PM Patrol displaying current seconds within the Time on the main Status Line. The Show Julian Date option enables or disables PM Patrol displaying the current Julian date (in addition to the normal Gregorian date) on the main Status Line. The Show Decimals option enables or disables PM Patrol displaying the decimal position for several of the Status Line monitors. When disabled, PM Patrol will apply standard rounding across affected values. The Show Compact option enables or disables PM Patrol displaying status information in "compact" form. When enabled, the monitor items on the PM Patrol Status Line have their abbreviations (i.e. "Ram", "Spl") removed thus allowing for more room within the Status Line window. The Show Total INet option instructs PM Patrol to display the total Internet Connect-Time on the Status Line as well as the per-instance connect time. When disabled, PM Patrol will show the current active Internet Connect-Time - upon re-connection, the connect-time will be reset to zero. The total connect time is saved when PM Patrol is shutdown and carried across each invocation of PM Patrol. The Internet Connect-Time is reliable as long as PM Patrol is active and able to monitor when Internet connects occur. The CPU Graph option enables or disables a visually graphic display of CPU activity. This option is accessible only when "CPU Monitor" is selected in "Status Line" monitors. The RAM Graph option enables or disables a visually graphic display of free or used Real RAM. If the "Invert Real RAM" option is selected, this will show used Real RAM. Otherwise, free and available Real RAM is displayed. This option is accessible only when "Real RAM Monitor" is selected in "Status Line" monitors. The Resident RAM Graph option enables ordisables a visually graphic display of current Resident RAM as compared to total physical memory. This option is accessible only when "Resident RAM" is selected in "Status Line" monitors. The Virtual RAM Graph option enables or disables a visually graphic display of free or used Virtual RAM. If the "Invert Virtual RAM" option is selected, this will show used Virtual RAM. Otherwise, free Virtual RAM is displayed. It is accessible only when "Virtual RAM" is selected in "Status Line" monitors. The Swap Graph option enables/disables a visually graphic display of current free or usedswap as compared to the current size of the swap file and is accessible only when "Swap Monitor" is selected in "Status Line" monitors. If the "Invert Swap" option is selected, this will show used Swap. Otherwise, free and available Swap is displayed. ═══ 9.5. Status Line Monitors ═══ The Status Line Monitors list-box contains all the PM Patrol monitors that you may select for display on the PM Patrol Status Line. Selecting monitor items for the Status Line does NOT imply that these same selected monitors are those which are logged via PM Patrol's Logging facility. The Logging facility contains its own monitor selections and can be customized under the "Logger Settings" dialog. The Status Line is updated immediately when monitors are selected or deselected. These monitor items within the listbox are discussed in detail under the on-line help section called "Status Line". ═══ 10. Monitors ═══ This section describes various performance monitors of PM Patrol. ═══ 10.1. Activity Monitor ═══ The Activity Monitor window provides a line-graph view of several OS/2 resources. 1. "Free Swap" is a blue line and represents free swapper space. When enabled, the "Used Swap" graph line is disabled. 2. "Used Swap" is a blue line and represents used swapper space. When enabled, the "Free Swap" graph line is disabled. Due to the nature and dynamics of OS/2's method of virtual memory swapping, PM Patrol's calculation of swap utilization can result in an approximation. 3. "Current CPU" is a yellow line and represents the current CPU utilization. 4. "Average CPU" is a white line and represents the rolling average CPU utilization. 5. "Magnified CPU" is a pink line (may be purplish on color depths greater than 640x480) and represents a magnified CPU utilization. The level of magnification is specified in "General Settings". By default, this option is not enabled and is set for 90 percent magnification in General Settings. This feature of PM Patrol lends itself to high-end i486 and Pentium based CPUs. Magnification is not reflected in the normal CPU monitor on the PM Patrol Status Line window. 6. "Free RAM" is a green line and represents memory available for OS/2 and applications. When enabled, the "Used RAM" graph line is disabled. 7. "Used RAM" is a green line and represents the memory in use by OS/2 and applications. When enabled, the "Free RAM" graph line is disabled. 8. "Resident RAM" is a cyan line represents resident non-swappable memory locked by OS/2 or applications. 9. "Swappable RAM" is a red line and represents memory capable of being swapped-out by OS/2. This window is refreshed automatically at the frequency as set in the "Refresh Settings" setting "Activity Monitor". The following itemizes the mouse button activities for the Activity Monitor. 1. A "Chord-Click" (left and right mouse buttons together) in the Activity Monitor window will toggle the window title bar on and off. 2. A "Double-Click" with the left button in the Activity Monitor window will toggle between Maximized and Restore views for the window. This is a useful feature when the "Hide Title Bar" feature is used. 3. A "Single-Click" with the right button in the Activity Monitor window will popup a menu allowing you select which line graphs to view and change window controls ("Hide Title Bar", "Smoothed Lines", and "Float to Top"). 4. Holding down the right mouse button (button 2), you may drag the Activity Monitor window to the desired position. The "Float to Top" option enables or disables the Activity Monitor window being kept as the "topmost" window on the OS/2 desktop and therefore visible all the time. When enabled, the "Smoothed Lines" option will attempt to "fillet" or smooth-out the line graphs reducing the effect of sharp jagged points. Note: "Smoothed Lines" will cause more overhead during refresh. If you have a slower machine, you should be aware of this. An additional 3-5% more overhead per refresh is not uncommon - depending on the speed of your computer. When enabled, the "Sliding Graph" option will maintain a continuous graph that will slide left 1 point after each refresh, thus filling the entire window width of the graphing area. Otherwise, the graph lines will be "centered" and will cause graph lines to restart from the center of the graph window when the graph lines reach the rightmost edge. The "Hide Title Bar" option allows the window to be sized to a minimum size without the window title bar and controls getting in the way. Accessed from the Activity Monitor popup window, the Legend shows the identity and color of each monitor line along with the current statistics for each monitor item. The legend can be configured to start-up automatically when the Activity Monitor is started by selecting the "Auto-Start Legend" option also in the popup menu. Additionally, the "Persistent Legend" causes the legend to be started and remain visible while the Activity Monitor is in a maximized state. ═══ 10.2. Process Monitor ═══ The Process Monitor window provides the ability to monitor OS/2 active processes, threads, process and thread priorities, shared memory, DLLs, and CPU use per process. Processes (PIDs) can be "killed" by selecting "Kill" from the "Action" menu. Note: With all PM Patrol Monitor windows (i.e. Process Monitor, Memory Monitor, and Network Monitor) active and automatically refreshing, may be too much overhead for some slower 386 class computers. Therefore, you may need to use these windows selectively and not continuously. The Process Monitor window will increase PM Patrol's CPU requirements by an additional 1-3 percent depending on your CPU speed. The container control in the Process Monitor window supports right-click popups for quick access to "Action" items and double-click selections. Double-clicking in the Process Monitor window invokes the Thread Monitor for the Process ID selected. The "View" menu item provides options to let you select the desired Process Monitor display and the following detail items: 1. The "Background" option switches the display to include/exclude processes which are "System" or "Detached" process types or have no Session ID (SID). This option provides the ability to focus only on "Foreground" programs active on your system. Foreground programs will include all OS/2 PM, OS/2 character based, and DOS+Windows programs. When background processes are filtered-out, the Process Monitor window will show the total CPU used by background processes under the name "Bgnd (n)". Where n reflects the number of process in the background. 2. The "Idle Time" option switches the display to include/exclude Idle System time. When applications consume CPU, "Idle System" will decrease. When your system sits idle, "Idle System" increases. When enabled, idle CPU will be shown under the name "Idle Time". 3. The "Run-Time" option provides the ability to view the duration for which a process has been active and running and is only applicable to the "Process Monitor" window. 4. The "Session Title" option switches the display from executable names to session names and is applicable to the "Process Monitor" and "Process Summary" windows only. Some instances will show what appears to be a duplicate session name. This occurs when one or more processes have the same OS/2 Group Session/Screen ID. There is NOT always a 1 to 1 relationship between a Process and a Session. Note: Not all processes have a Session and will therefore display the executable name instead. This occurs when the process never had a Session to begin with, such as a daemon processes ("Detached" or "System" session types). 5. The "Float to Top" option enables or disables the Process Monitor window being kept as the "topmost" window on the OS/2 desktop and therefore visible all the time. When obscured by another window, the Process Monitor window will "float" to the top of the desktop - but will not be the active window. Note: Refer to the on-line help section "Trouble Shooting" for idiosyncrasies associated with the "Float to Top" option under OS/2 versions 2.1 and 2.11. Note: The Process Monitor window will always attempt to display the Session Title for DOS/Windows programs. In the event that this can not be accomplished, the name "dos/win" will be used. The "Process Meter" option provides an alternative access point for the Process Meter window and can also be accessed from the PM Patrol Utility pop-up window. The data displayed in the Process Monitor window is outlined below. Press Escape to exit the window and terminate the "Process Monitor" facility. 1. "PID" Process ID (displayed as a hex value) 2. "Type" Session Type of process. Session types are categorized as: a. "Sys" OS/2 System type processes. b. "PM " OS/2 Presentation Manager GUI processes. c. "VIO" OS/2 Window and full screen command prompt processes. VIO represents Virtual Input/Output. d. "VDM" DOS and Win-OS2 GUI processes. VDM represents Virtual DOS Machine. e. "Det" OS/2 detached background processes (daemons). 3. "HPri" Identifies the Highest PRIority class for the process across all threads within the process. Refer to the Thread Monitor section below for detailed descriptions of priority Classes. 4. "Thd" Number of threads in the process 5. "Run-Time" represents the duration for which a process has been actively running and has the format "dd hh:mm" where: a. "dd" is Days b. "hh" is Hours c. "mm" is Minutes Note: The "Run-Time" of a process is relative to when PM Patrol was started. If PM Patrol is stopped and then restarted, the "Run-Time" for processes will reset. It is recommended that PM Patrol be placed in the OS/2 "Startup" folder so it is automatically started when you boot your system. As a result, the "Run-Time" values will reflect very accurate results. 6. "CPU" Amount of Relative CPU time the process (PID) consumed since the last sample along with a bar-graph representation and percentage of total CPU load across all processes. This is a "relative" CPU load as compared to other active OS/2, DOS, and Windows programs. 7. "Process" Name of the executable or session The data displayed in the Process Summary is outlined below. Press Escape to exit the window and return to "Process Monitor". 1. "PID" Process ID (displayed as a hex value) 2. "PPID" Parent Process ID (displayed as a hex value) 3. "SID" Session ID (displayed as a hex value) 4. "Type" Session Type of process 5. "HMod" Program Executable module handle (displayed as a hex value) 6. "Thd" Number of threads in the PID 7. "Sem" Number of semaphores used by the PID 8. "DLL" Number of DLL modules used by the PID 9. "Shr" Number of shared memory references used by PID 10. "MMT" Memory Model Type of process (16 or 32 bit) 11. "Process" Name of the executable or session The data displayed in the Thread Monitor window is for a given PID and is outlined below. Press Escape to exit the window and return to "Process Monitor". 1. "TID" Thread ID (displayed as a hex value). 2. "Slot" Slot ID for the TID (displayed as a hex value). 3. "Block ID" Block identifier for a blocked TID (displayed as a hex value). A thread that is a "Ready" state will typically have a "Block ID" of zero. 4. "Pri" Current priority for the TID. This displays both priority Class along with the current Range priority (display in decimal format) within the Class. Priority "Ranges" operate within a priority Class and range from 0 to 31, 0 being the lowest and the "normal" OS/2 default. The Range provides robust priority control and granularity. Priority Classes are categorized as: a. "Idle" for low priority processes which only get CPU when nothing else is running and the lowest OS/2 priority. b. "Reg" for "normal" priority processes. This is the OS/2 default and will be seen most often. c. "Fore" for foreground priority processes. This is used for processes/threads which need to be treated as if they are the "active" window. Net effect of this class makes the process thread operate at near time-critical performance. d. "Crit" for time-critical processes and is the highest OS/2 priority. This is used for process threads which require guaranteed time-slices by OS/2 but the thread's CPU needs are typically very short. 5. "Sys CPU" Amount of time thread spends in the OS/2 kernel along with the percent of "Sys CPU" compared to TOTAL "Sys CPU" for all threads in the same PID. 6. "User CPU" Amount of time application time for the thread along with the percentage of "User CPU" compared to TOTAL "User CPU" for all threads in the same PID. This is relative to other threads getting time slices in the same PID. 7. "State" Identifies what state the thread is in: Blocked, Frozen, Running, or Ready. The data displayed in Shared Memory window has the following attributes: Press Escape to exit the window and return to "Process Monitor". 1. "HMem" Handle to memory allocation (displayed as a hex value) 2. "Sel" Selector to memory (displayed as a hex value) 3. "Refs" Number of references to the memory 4. "Name" Name of the memory used for obtaining addressability The data displayed in the Dynamic Link Libs, Device Drivers, and File Systems are outlined below. Press Escape to exit the window and return to "Process Monitor". 1. "HMod" Handle to the module (displayed as a hex value) 2. "MMT" Memory Model Type of process (16 or 32 bit) 3. "Refs" Number of references to the module 4. "Name" Name of the module ═══ 10.3. Process Meter ═══ The Process Meter window provides the ability to monitor process statistics for identifying duration and CPU consumption over a range of time. The "Process Metering" option in the PM Patrol "General Settings" dialog controls when this feature is active or inactive. For slower systems (i386 class computers), turn Process Metering off if it is not used. By default, PM Patrol resets the Process Meter data base each time PM Patrol is started. This "Startup" option in PM Patrol's "General Settings" window controls this behavior. To keep PM Patrol from resetting the statistics, turn off the "Reset Process Meter" option. Doing so will cause PM Patrol to retain statistics across each invocation of PM Patrol. At the refresh interval as specified by "Process Monitors" in PM Patrol's "Refresh Settings", PM Patrol quietly collects vital information about active processes running on your system. The data collection algorithm used within the Process Meter facility is highly optimized and based on how frequently programs are used on your system, therefore using minimal CPU effort. All data is obtained by PM Patrol and requires no user input. The "Process Meter" window provides the ability to view several items about your programs over a range of time. This range of time is completely under your control as you have the ability to "Reset" the Process Meter data base any time. 1. Analyze the CPU consumption for each program you run relative to ALL other programs that have been run since the last time you reset the statistics. 2. Analyze the execution time used for each program you run relative to ALL other programs that have been run since the last time you reset the statistics. 3. Analyze the number of instances a program has been invoked. 4. Analyze the first and most recent date of execution for all processes run on your OS/2 system. 5. Analyze the process types and priorities for all processes run on your OS/2 system. 6. Sort in ascending order by process, CPU use, Run-Time, and frequency of use. a. Sort by Process sorts the list in alphabetic (ascending) order. b. Sort by CPU Use sorts the list in descending order (processes consuming most CPU are listed first). c. Sort by Run-Time sorts the list in descending order (processes which run the longest when executed are listed first). d. Sort by Run-Count sorts the list in descending order (processes which get run the most often are listed first). Use the "Refresh" menu option (under "Action") for refreshing the Process Meter window contents upon your request. PM Patrol will automatically update this window for you every minute - but not when the Process Meter window is the current "active" desktop window. This allows you to browse through the list without being disturbed. Use the "Reset Data Base" menu option (also under "Action") to initialize PM Patrol's Process Meter data base. This erases the current list and restarts the data collection process allowing you to monitor over a new range of time. The Process Meter data base is maintained entirely by PM Patrol and saved when PM Patrol is shutdown. The next time you run PM Patrol (typically at the next OS/2 bootup) the data base is quickly reloaded and monitoring continues where left off. Note: The CPU effort to collect Process Meter data, although minimal when active, can be negatively influenced by adjusting the "Process Monitors" frequency in PM Patrol's "Refresh Settings" dialog too low - depending on the computer. As a rule of thumb, set the "Process Monitors" frequency to the following, but never lower: 1. 5 seconds for i386 class computers 2. 4 seconds for i486 class computers 3. 3 seconds for Pentium class computers The items displayed in the Process Meter window are: 1. "Process" represents the name of the executable 2. "Actual CPU" represents the actual CPU effort the process has used since the last time the Process Meter was reset and reflects CPU usage only when the process is active. This is an absolute CPU effort and not relative to other programs run. Actual CPU tells you how much CPU the process uses when its run. 3. "Relative CPU" represents the CPU effort the process has used, relative to other programs used, since the last time the Process Meter was reset. 4. "Run-Time" represents the total amount of execution time for the process, relative to other programs used, since the last time you performed a "Reset Data Base". Next to "Run-Time" is the total execution time or "Duration" for the process since the last "Reset Data Base". The format displayed identifies Days, Hours, Minutes, and Seconds (Dd Hh:Mm.Ss). 5. "Run-Count" represents the total number of times the process has been executed relative to other processes. The actual total number of instances is identified under the heading "Frequency" (abbreviated as "Freq"). 6. "Type" identifies the session type which are categorized as follows: a. "Sys" OS/2 System type processes. b. "PM " OS/2 Presentation Manager GUI processes. c. "VIO" OS/2 Window and full screen command prompt processes. VIO represents Virtual Input/Output. d. "VDM" DOS and Win-OS2 GUI processes. VDM represents Virtual DOS Machine. e. "Det" OS/2 detached background processes (daemons). 7. "HPri" Identifies the Highest PRIority class for the process across all threads within the process. The range of priority within OS/2 provides robust priority control and granularity. Priority Classes are categorized as: a. "Idle" for low priority processes which only get CPU when nothing else is running and the lowest OS/2 priority. b. "Reg" for "normal" priority processes. This is the OS/2 default and will be seen most often. c. "Fore" for foreground priority processes. This is used for processes/threads which need to be treated as if they are the "active" window. Net effect of this class makes the process thread operate at near time-critical performance. d. "Crit" for time-critical processes and is the highest OS/2 priority. This is used for process threads which require guaranteed time-slices by OS/2 but the thread's CPU needs are typically very short. 8. "MMT" represents the Memory Model Type of process (16 or 32 bit) 9. "Last Run" represents the last recent date the process was executed. 10. "First Run" represents the first date the process was executed. Note: This release of PM Patrol's Process Meter groups together the Run-time and CPU efforts for all DOS+Win programs and identifies them in the Process Meter list with a Process name of "DOS/Win". OS/2 command and REXX scripts (.CMD) are reflected within the Process "cmd" - the actual executable which supports REXX scripts. ═══ 10.4. Memory Monitor ═══ The Memory Monitor window provides an optional view of several memory utilization monitors. This window is refreshed automatically at the frequency as set in the "Refresh Settings" setting "Memory Monitors". 1. The RAM Free item identifies current free memory. 2. The RAM Used item identifies current used memory. Combined, these two items will always reflect 100% of the memory installed in your computer. 3. The Resident item identifies current resident or "fixed" memory which is not swappable by OS/2. Most of this memory is owned and created by OS/2 and will vary little. 4. The Swappable item identifies current swappable memory and only includes memory that is in use and not resident (or fixed). Therefore, the sum of "Resident" and "Swappable" may not always equate to total physical memory. Any difference can be attributed to free (unused) memory which is not swapped. 5. The Virtual RAM item identifies current Virtual Memory capacity available to OS/2. This item factors in available disk space for the drive which the OS/2 swapper file is located as well as swapper file size. 6. The Swap Growth item identifies how much the swapper file has grown since system boot. 7. The Swap Free item identifies how much free space remains in the OS/2 swapper file. 8. The Cache Read and Cache Write items identify the cache hit utilization for HPFS386 and is only displayed when HPFS386 is installed and active. Note: With all PM Patrol Monitor windows (ie. Process Monitor, Memory Monitor, and Network Monitor) active and automatically refreshing, there may be too much overhead for some slower 386 class computers. Therefore, you may need to use these windows selectively and not continuously. ═══ 10.5. Network Monitor ═══ The Network Monitor window provides an optional view of several LAN network utilization monitors. This window is refreshed automatically at the frequency as set in the "Refresh Settings" setting "Network Monitors". The Network Monitor window is inaccessible and grayed-out in the PM Patrol Utility menu when LAN Server components are not installed on the workstation. 1. The Machine item identifies the workstation ID and does not change unless the workstation id is changed manually and the system rebooted. 2. The User item identifies the current user logged to the LAN. 3. The Server Id item identifies the server ID that is currently logged on to by the active user. 4. The Domain item identifies the domain ID that is currently logged on to by the active user. 5. The Tot In item identifies the total accumulative bytes received by this workstation from the LAN. The graph identifies "Total In" as compared to total bytes received AND sent and therefore is a percent of total I/O. 6. The Tot Out item identifies the total accumulative bytes sent by this workstation to the LAN. The graph identifies "Total Out" as compared to total bytes received AND sent and therefore is a percent of total I/O. 7. The Bps In item identifies "Bytes Per Second" and is the average number of bytes RECEIVED via LAN over the last "n" seconds where "n" is the refresh frequency as set in the "Refresh Settings" setting "Network Monitors". This offers a "snapshot" view of current average per second inbound activity from the network. 8. The Bps Out item identifies "Bytes Per Second" and is the average number of bytes SENT via LAN over the last "n" seconds where "n" is the refresh frequency as set in the "Refresh Settings" setting "Network Monitors". This offers a "snapshot" view of current average per second outbound activity from the network. 9. The Bss In item identifies "Bytes Since last Sample" and is the total number of bytes received via LAN over the last "n" seconds where "n" is the refresh frequency as set in the "Refresh Settings". 10. The Bss Out item identifies "Bytes Since last Sample" and is the average number of bytes sent via LAN over the last "n" seconds where "n" is the refresh frequency as set in the "Refresh Settings". Note: With all PM Patrol Monitor windows (ie. Process Monitor, Memory Monitor, and Network Monitor) active and automatically refreshing, may be too much overhead for some slower 386 class computers. Therefore, you may need to use these windows selectively and not continuously. ═══ 10.6. Port Monitor ═══ The Port Monitor window provides insight and advanced control over LPT parallel ports on your system. This window is refreshed automatically in real-time as events occur for all ports. Refresh occurs when the port is opened, closed, and after every 10 packets pass through the port device driver. Using the "Reset" menu option, you can initialize the current statistics for each port. This option will reset all statistics for ALL ports, but will keep the LPT Controls (Pass-thru and Debug) in their current settings. PM Patrol will retain these statistics across each invocation of PM Patrol. It is up to you when you want these statistics initialized. Controlled from the "Spooler" priority object within the OS/2 System Setup folder, printing performance can be fine tuned for print jobs that are sent through the OS/2 spooler. Printing can be monitored via PM Patrol's Port Monitor whether the OS/2 spooler is active or not. 1. The Port item identifies the LPT port. 2. The Jobs item identifies the current total number of jobs having passed through the LPT port. Technically speaking, "jobs" constitutes each time the port was opened for I/O. 3. The Rate item identifies the total bytes per second (BPS) that have been sent and received via the LPT port. This value is very accurate, but can be influenced greatly if the "Debug" option is enabled. This value constitutes an average over ACTUAL time (milliseconds) that the port is open. 4. The Time item identifies the average time (seconds) for print jobs. 5. The Pass item identifies the current status of the Pass-thru option. When enabled, all I/O is allowed to pass through the LPT device driver. Otherwise, all I/O is "eaten". This is beneficial when simulation is required. 6. The Debug item identifies the current state of "Debugging". 7. The Act item identifies whether an active job currently exists on the port. Turning on the "Debug" option allows you to monitor and watch each packet sent to the port via the Debug viewing window. This feature is designed to allow monitoring of packets via Debug. Using the new Debug facility, individual packets can be monitored providing "data scope" capability. When Debug is enabled for a selected LPT port, an artificial delay (1 second) is inserted between each packet sent to the port. The "Pass-thru" option allows you to enable/disable data to be passed through the port. Used primarily for testing purposes, this feature enables the simulation of port activity without an actual printer be attached. Note: With all PM Patrol Monitor windows (ie. Process Monitor, Memory Monitor, and Network Monitor) active and automatically refreshing, may be too much overhead for some slower 386 class computers. Therefore, you may need to use these windows selectively and not continuously. ═══ 10.7. Event Monitor ═══ The Event Monitor window allows you to view the current state of PM Patrol events from a "bird's eye view". The Event items reflect each of the events within PM Patrol. Active represents the current activity state of each event. A check mark will be displayed when the event is active. THold identifies the upper or lower Threshold limit for each event as defined in "Event Settings". This allows you to compare the event state and the threshold limit to exceed. Count identifies the number of times the event occured. This value is incremented each time the event threshold is exceeded the first time, but not upon renotification. Last State and Occurrance identifies the resource "state", date, and time when the event last occured. These values are updated the first time the event occurs and at renotification. Selecting "Reset" from the "Action" menu will allow you to initialize all event statistics. Event statistics are retained and accumulate across each invocation of PM Patrol. It is up to you when you want to reset the event statistics. This window is updated when an event occurs as well as every minute. ═══ 10.8. Drives Monitor ═══ The Drives Monitor window allows you to view current drive attachments, current assignments (LAN), capacity, and used/free space. For network performance reasons, this window is refreshed automatically every minute on its own and can not be controlled from the "Refresh Settings" options. Use the drop-down menu option "Refresh" (under the "Action" menu) to manually refresh the window yourself. The "Utilization" graph displayed identifies USED space on the drive - not free. ═══ 10.9. Status Line ═══ This section describes the monitor items that can be displayed on the main PM Patrol Status Line. ═══ 10.9.1. Current Date ═══ Display of the current date. Selecting the "Show Julian Date" will add the current Julian date to this item. ═══ 10.9.2. Current Time ═══ Display of the current time with the option of showing seconds as part of the time when "Show Seconds" is selected in the "Options" dialog. ═══ 10.9.3. System Up-Time ═══ Display the total time that OS/2 has been up and running since last boot. The PM Patrol Status Line display for this monitor will reflect the format "dd hh:mm" representing "days", "hours", and "minutes". ═══ 10.9.4. INet Connect-Time ═══ Displays the per-instance Internet Connect-Time that the workstation has been connected to the Internet when using a modem. Internet Connect-Time feature requires modem connection using the PPP or SLIP protocols of IBM's Internet Access Kit, or the In-Joy dialer available at http://www.belle.dk/~bj/dialer.html. The PM Patrol Status Line display for this monitor will reflect the format "INet: hh:mm x" representing "hours" and "minutes". The "x" is an indicator to inform you when your connected. A flashing arrow pointing up indicates your're connected. An arrow pointing down indicates your not. Used in conjunction with this feature, the "Show Total INet" option in PM Patrol's Options window will display the ongoing accumulative total of Internet Connect-Time in addition to the per-instance connect-time. This per-instance connect-time will automatically reset to zero when PM Patrol is stopped and then restarted, or when a new INet connection is established. PM Patrol stores the total INet connect-time in PM Patrol's profile. This Total INEt counter can only be reset manually. For manual reset, refer the Utility popup option ("Display" menu item) for "Reset Internet Time". The INet Connect-Time feature of PM Patrol does not apply to TCP/IP connections via a LAN. ═══ 10.9.5. Keyboard Status ═══ The Keyboard Status displays the status of CapsLock, NumLock, and ScrollLock keyboard settings. ═══ 10.9.6. Net User ID ═══ When logged-on to a LAN Server, the current "User ID" is displayed. This options requires that IBM LAN Requester network software be installed on the local workstation. ═══ 10.9.7. Spooler Monitor ═══ This item allows you to monitor print jobs that are in print queues. This includes print jobs that are Held, Printing, Canceling, and other dispositions. There is two types of monitoring: 1. Display total print jobs across all spooler queues. 2. Display total print jobs per spooler queue. If you select the "Total all Print Queue" option in General Settings, then the total print jobs across all queues will be shown. Otherwise, the number of print jobs for each queue are shown up to a maximum of 8 queues. The "Total all Queues" option in the "General Settings" switches between the two modes identifies above. When logged-on to a LAN Server you can monitor its remote print queues. Refer to the "General Settings" section for more details. ═══ 10.9.8. Process Summary ═══ This display item reveals the total current number of OS/2 processes and threads in the system. This includes PIDs and TIDs of any state; Blocked, Running, and Ready. The Process Summary items are displayed as follows; the numbers shown below are examples: 1. "12p" representing 14 active processes (p). 2. "63t" representing 63 active threads (t). 3. "105f" representing 105 open files (f). Open files includes all executables, data files, INI files, DLLs, WPS objects, and any other type of file you can think of. ═══ 10.9.9. Drives On-line ═══ This item displays the current drive letters for available drives accessible from this computer. Network drives are supported. ═══ 10.9.10. Drive 1-6 Monitors ═══ Displays the free space (MB) for a selected drive. To select a different drive to monitor you may choose you one of the following methods: 1. Single click the right mouse button on the PM Patrol Status Line and then select the "Drives" menu item. Select "Monitor" to choose a drive. 2. Double click the left mouse button on the PM Patrol Status Line to get the Options dialog. Then select the "Utility" menu bar item followed by the "Drives" menu option. Selected drives will be permanently "remembered" as defaults when changed. Selected drives will report a "?" when the drive changes "off-line". This can occur if the drive is a network drive and the user performs a LOGOFF. Or, removing a removable media type such as a floppy diskette. By default, PM Patrol maps drives 1 through 6 on the Status Line to drives C through H. This drive mapping can be changed to any desired combination. 1. From the PM Patrol Status Line, right-click the Status Line. 2. Select the "Drives" menu option 3. Then select the "Status Line" option. 4. This will display a menu identifying the current drive mappings assigned. Select the PM Patrol drive number you wish to change. 5. A mini dialog will popup displaying current drives on-line and accessible. Choose which drive to map. 6. To tell PM Patrol to show the drive on the Status Line select the drive number in PM Patrol's "Status Line Monitors" in the "Options" dialog. 7. This information is saved and remembered by PM Patrol. When a drive being monitored goes off-line, PM Patrol displays a "?" in place of the free space for the drive to inform you the drive is off-line. This is more common when monitoring remote drives on a network. ═══ 10.9.11. Battery Status ═══ This item informs the user how much battery power is remaining. The OS/2 APM facilities assume the battery to be 100% new. As the battery ages, the original maximum life of the battery diminishes. Especially for NICad batteries. PM Patrol allows you to specify a "new" maximum life. When set at zero, observe the PM Patrol "Bat" percentage. When your computer informs you the battery is dangerously low (usually several short beeps), observe the percentage that PM Patrol reports. This value becomes the new "zero" point. Select this value in the "Battery Calibration" field in the "General Settings" dialog. Repeat this process every 3-4 months to ensure accurate and reliable battery readings. Note: This option is accessible only if APM is installed via OS/2 and the computer is a mobile computer capable of power management (i.e. 386sl+). When (and if) the battery status is unknown, PM Patrol displays a question mark in replacement of the actual percentage of power remaining. ═══ 10.9.12. HPFS386 Cache Monitor ═══ PM Patrol will monitor the read/write cache hit ratio for systems running the 32-bit High Performance File System (HPFS386). The read/write percentages are displayed on the PM Patrol Status Line with the abbreviation "Crw". This abbreviation represents "Cache Read Writes", so the first percentage seen is Reads and the second percentage is writes. Note: This version of PM Patrol only supports the ability to obtain Cache ratios from HPFS386 and not the 16-bit HPFS shipped with OS/2. PM Patrol will display a "?" if HPFS386 Cache Monitoring is selected but not installed/active. ═══ 10.9.13. Swap Monitor ═══ This display option displays the current size of the OS/2 swapper file. If the "Show Percent" option for this monitor is selected, then the percent of free or used swap space is also displayed. When the "Invert Swap" option is selected, this will show used Swap. Otherwise, free and available Swap is displayed. Due to the nature and dynamics of OS/2's method of virtual memory swapping, PM Patrol's calculation of free swap space is an approximation and may not result in an exact calculation all the time. As compared to all PM Patrol's resource monitors, swap utilization is the only one that may yield approximation. For systems that are memory rich and therefore swap little, monitoring swap utilization may not be necessary. ═══ 10.9.14. Virtual RAM Monitor ═══ Virtual RAM item identifies current Virtual Memory capacity available to OS/2. This item factors in available disk space for the drive which the OS/2 swapper file is located as well as swapper file size. When the "Invert Virtual RAM" option is selected, this will show used Virtual Memory. Otherwise, free and available Virtual Memory is displayed. If the "Show Percent" option for this monitor is selected, then the percent of free or used Virtual RAM is also displayed. ═══ 10.9.15. Resident RAM Monitor ═══ The Resident RAM monitor allows you to see OS/2 memory which is non-swappable fixed memory. Typically, this will include OS/2 system memory and any memory allocated by processes which is marked as non-discardable memory. If the "Show Percent" option for this monitor is selected, then the percent of free or used Resident RAM is also displayed. ═══ 10.9.16. Real RAM Monitor ═══ This displays the amount of free or used RAM (k). When "Show Percent" is selected for this monitor, the percentage of RAM is also displayed. When the "Invert Real RAM" option is selected, Real RAM will be reported as used Real RAM. Otherwise, free and available Real RAM is displayed. Optionally, you can view free or used RAM in bar-graph form by enabling the "RAM Graph" option in the "Quick Configure" section of the "Options" dialog. OS/2 views memory as a flat linear address space and deploys a true Virtual Memory Model. Because of this, calculation of Free Memory is subject to the following constraint. Note: If your system hardware consists of MORE than 16MB of memory and the hard disk controller is a 16-bit adapter, calculation of Free Memory may not be accurately reported. Use a 32-bit disk controller adapter with more than 16MB RAM. ═══ 10.9.17. CPU Monitor ═══ PM Patrol monitors the CPU utilization every second. If the "CPU Graph" has been enabled in the Options dialog, then a bar-graph view of CPU usage is displayed in addition to the percentage. Along with the current CPU load, PM Patrol also maintains a rolling average of CPU utilization over 1 minute. This is called the "CPU Average" in PM Patrol. ═══ 10.9.18. User Defined Monitor ═══ PM Patrol provides a "user defined" monitor to be displayed at the end of the main Status Line and can be logged in the Logging Facility. Using the PM Patrol "DCFUserDefined" API within a C/C++ program, you can format a monitor buffer of your choice. Refer to the API description for DCFUserDefined for details. ═══ 11. Utility ═══ The Utility section provides a growing number of utility items. This section will, along with monitor items, continue to grow in functionality. The "Utility" menu can be accessed from the PM Patrol "Options" dialog or from the PM Patrol Status Line and clicking the right mouse button. ═══ 11.1. Logger ═══ The Logger facility provides a robust mechanism for recording all PM Patrol monitors to a file. Once logged, the user can "view" the logged data for further review. Most monitor items can be selected/deselected from being logged in the "Logger Settings" along with several other Logger Options such as duration, frequency, and location of log file(s). The log file is ASCII and able to be further manipulated using tools such as Rexx, AWK, and GREP. A convenient "field separator" (vertical bar=0xb3) is included in the log file for identifying individual fields in the log file record. The PM Patrol Logger is designed with special consideration for performance. When logging, the Logger mechanism requires very little CPU. The PM Patrol Logger can be used in a variety of situations: 1. Real-time and time critical logging with 1 second samples. 2. Casual logging with infrequent (1 per minute) samples ═══ 11.1.1. Start/Stop ═══ The Start/Stop option start or stops the logging activity. ═══ 11.1.2. View Primary Log ═══ The View Primary Log option allows you to view the contents of the information recently logged. The Viewer program can be defined in the "General Settings" section. The default Viewer is the PM Patrol's View program "PMPVIEW.EXE". The name and location of the primary log file is user settable. This is specified in the "Logger Settings" settings. ═══ 11.1.3. View Backup Log ═══ The View Backup Log option allows you to view the contents of the information logged previously. If the "backup log" option is not enabled, this option is not accessible. The location of the backup log file is the same as the location for the primary log file as specified in the PM Patrol "Logger Settings". The name of the backup log file name is always "PMPATROL.BAK". ═══ 11.1.4. Delete All Logs ═══ The Delete All Logs option allows you to delete all PM Patrol log files from disk (if present). This includes the primary and backup log files. ═══ 11.2. Debug ═══ The Debug facility is a flexible and easy to use real-time Debugger for the software developer that provides debugging capabilities that are impossible for the source-level debugger, easier to use, and often more convenient. Debug is used by the PM Patrol Port Monitor to provide a "data scope" for information being passed through the printer port for LPT1-LPT3. Once logged, the user can "view" the logged data for further review. The log file is ASCII and able to be further manipulated using tools such as Rexx, AWK, and GREP. ═══ 11.2.1. Start/Stop Debug ═══ The Start/Stop Debug option starts or stops the Debug Facility. ═══ 11.2.2. Start/Stop Debug Log ═══ Output from the Debug facility is sent to the Debug viewing window. When logging is started, the output also goes to the "DBUG.LOG" file and is immediately viewable. When logging is stopped, the "DBUG.LOG" is closed. The next time logging is started, the "DBUG.LOG" file is backed-up to "DBUG.BAK" and a new "DBUG.LOG" is created. ═══ 11.2.3. View Primary Log ═══ The View Primary Log option allows you to view the contents of the information recently logged. The Viewer program can be defined in the "General Settings" section. The default Viewer is the PM Patrol's View program "PMPVIEW.EXE". The name and location of the Debug log files are constant. Located in the PM Patrol installation directory, log files are named "DBUG.LOG" for the primary and "DBUG.BAK" for the backup log file. ═══ 11.2.4. View Backup Log ═══ The View Backup Log option allows you to view the contents of the information logged previously. ═══ 11.2.5. Delete Debug Logs ═══ The Delete Debug Logs option allows you to delete all Debug log files from disk (if present). This includes the primary and backup log files. ═══ 11.3. Drives ═══ The Drives options provides the ability to switch drives that are on-line and you wish to monitor, format(full and fast), check and view summary information for a particular drive. This is accessed from the PM Patrol "Utility" menu. ═══ 11.3.1. Status Line ═══ The Status Line option provides the ability to switch drives that are on-line that you may want to monitor on the PM Patrol Status Line. After selecting the drive (1 through 6) to change, the "Drives List" popup allows you to select a drive. After selecting a drive from the "Drive List", the drive appears on the PM Patrol Status Line and is remembered when PM Patrol is ended. ═══ 11.3.2. Drive Map and Summary ═══ The Drive Map and Summary option provides the ability to view summary, detail, and directory map information for a selected drive. The Drive Summary options displays volume specifics as well as media format and device type. Summary level data displays a wealth of information. The Drive Map option displays a graphical view of directories, size of directories, and distribution of directory sizes relative to total USED space on the file system. The bar-graph is calculated in comparison to the LARGEST size directory found on the drive, while the percentage is calculated in comparison to the total USED space on the drive. Note: The Drive Map "Bytes" reflects total space USED per directory and includes both Slack bytes and EA bytes of files in the subdirectory - not just the bytes comprising each file. ═══ 11.4. Spooler ═══ The Spooler options support a variety of Print Spooler utilities such as: 1. Purge all print jobs in a Print Queue (Local or Remote) 2. Release all print jobs in a Print Queue (Local or Remote) 3. Hold all print jobs in a Print Queue (Local or Remote) If logged on to a LAN Server and signed-on under the LAN Administrator ID, ALL functions can be performed remotely for any LAN Server and these functions will affect ALL print jobs for the specified Print Queue. Otherwise, these functions will be performed for any print jobs OWNED by the current user of the workstation for the specified Print Queue. Note: The "Purge Queue" function deletes ALL print jobs of any state (held, printing, spooling, or released). ═══ 11.5. Programs ═══ The Programs option provides quick access to user definable programs. Using the "Program Settings" dialog, you can add up to 45 of your favorite programs. ═══ 11.5.1. Program Settings ═══ The "Program Settings" dialog allows you to specify: 1. The "Program Name". Duplicate names are allowed. This field is a required field in order for the entry to appear on the program popup menu. 2. The "Path and File Name" for the executable (.EXE or .COM). To invoke the OS/2 command prompt enter "CMD.EXE". This field is a required field in order for the entry to appear on the program popup menu. 3. The "Parameters" field allows you to enter any program parameters that may be required by the program you want to run. You can have PM Patrol prompt you for parameters when you launch the program by entering a '?' as the first character in the "Parameters" field. Place default parameters after the '?' if desired. This will invoke a dialog box when you run the program and allow you to enter new parameters. 4. The "Working Directory" informs the program launcher what the default drive and directory are to be when the program is launched. The "Resort" button allows you to sort the program list. PM Patrol will automatically keep the list sorted for you. While your adding programs to the list in this window, PM Patrol will NOT automatically resort the list while your're working on it. Therefore, this "Resort" button gives you the option as to when you want to see it resorted. When you close this window, the list is automatically resorted for you. The "Session" group allows you to further control HOW you wish to run the program: as native OS/2 PM, Windows session, full screen, DOS, and more. Except for DOS/Windows programs, use "Default" when your're unsure. 1. The "Win Enh" item identifies a Windows 3.1 Enhanced program and will be run as a "seamless" Windows session in "unprotected mode" (same session). 2. The "Win Std" item identifies a Windows 3.1 Standard program and will be run as a "seamless" Windows session in "unprotected mode" (same session). The "Window" group allows you to start the program in a minimized state. Additionally, you can select "Display existing window" to control the behavior when you run the program again. All programs are run in the "Foreground". With this enabled, PM Patrol will only allow 1 instance of the program to run and make the active instance of the program the foreground session. Otherwise, a new and separate session is started. The "Priority" group allows you advanced process control over a program's OS/2 priority. This includes both priority "Class" as well as the priority "Range" within the Class. Within the "Class" control, you can select 1 of 4 different classes: 1. "Regular" Class identifies a "normal" setting and is the default. This should typically be used for most programs. If your're unsure of the Class setting, use "Regular". 2. "Idle" class indicates that a program should only execute when nothing else is running. Typically used for carefree background processes. 3. "Foreground" class indicates that a program should execute at a fixed-high priority, but below time critical as if it were the "active" window. Net effect of this class makes the process operate at near time-critical performance. 4. "Critical" Class identifies a program as a "Time Critical" process. Understand that selecting this may cause other programs running to execute slower. The "Range" operates within the selected "Class" and you can select 1 of 4 different Range priority levels within each Class. 1. "Regular" Range identifies the "normal" and default priority setting within the Class selected. This should typically be used for most programs and is the default. If you are unsure of the Range setting, use "Regular". 2. "Low" Range identifies the lowest possible priority setting within the Class selected. Low and Regular have identical effects. This was chosen by design to avoid confusion as to what was a "normal" Range setting. 3. "Medium" Range indicates a midpoint priority level between the Low and High Ranges. 4. "High" Range indicates the highest possible priority within the class selected. Note: Use "Regular" for both Class and Range settings when the priority requirement of the process is unknown; this should be used as the default in all situations. You should rarely (if ever) set the priority combination to "Critical" Class and "High" Range settings. Doing so could likely bring OS/2 to its knees for a very CPU bound program. Note: Once launched, a program can change its own priority Class and Range settings. This means that PM Patrol sets the program's "default" priorities with those that you select, but does not control it after the program has been launched. A good example of this is running Windows programs. The Win-OS/2 environment will typically change the priority to "Regular" for both Class and Range. The "Action" item in the menu allows you to Add, Delete, or Run the highlighted program in the "Program List". To change an existing program's properties, simply select the program in the list, then change the desired fields for the program. Changes are immediate. Alternately, you can click the right mouse button while the mouse pointer is positioned over the "Program List" to get a quick access popup menu to the actions. ═══ 11.6. Desktop ═══ The System Setup option opens the OS/2 WorkPlace Shell "System Setup" folder object. The System Startup option opens the OS/2 WorkPlace Shell "Startup" folder object. The Tools option opens the OS/2 WorkPlace Shell "Main" folder for an assortment of OS/2 tools. The Games option opens the OS/2 WorkPlace Shell "Games" folder for an assortment of OS/2 games. The Drives option opens the OS/2 WorkPlace Shell "Drives" folder for disk utilities. The LaunchPad option opens the OS/2 WorkPlace Shell LaunchPad object. The Minimized option opens the OS/2 WorkPlace Shell "Minimized" folder object. The Templates option opens the OS/2 WorkPlace Shell "Templates" folder object. The Information option opens the OS/2 WorkPlace Shell "Information" folder for an assortment of books. The Command Prompts option opens the OS/2 WorkPlace Shell "Command Prompts" folder for an assortment of OS/2 command windows. The Font Palette option opens this OS/2 WorkPlace Shell palette The Color Palette option opens this OS/2 WorkPlace Shell palette The Minimize Windows option minimizes all visible windows on the OS/2 desktop. Convenient for periodically "clearing" the desktop when too many windows are active. The Restart Desktop option allows you to restart your OS/2 desktop and optionally specify a different set of OS/2 INI files to use. This option is particularly useful in network environments where individuals move from workstation to workstation and wish to inherit their "desktop personality" on a different PC. The "Defaults" option is designed to facilitate the the process of quickly switching back to the local workstation's default INI files. The "Restart Desktop" is unavailable when PM Patrol is started in "Secured" mode. Note: Be aware that on some multimedia enabled systems, restarting the OS/2 desktop may temporarily disable multimedia (MMPM/2). The Restore Windows option restores all minimized windows in the OS/2 Task Window or Minimized Folder to the OS/2 desktop. The Close All Folders option quickly closes all open OS/2 desktop folders. Convenient for periodically "clearing" the desktop when too many windows are active. The PM Patrol Shutdown option is an alternate way to shutdown PM Patrol quickly. This option will only appear in the Utility Popup menu when invoked from the PM Patrol Status Line. When selected, this will shutdown PM Patrol quickly and without confirmation. If PM Patrol is started in "Secured Mode (-S)", this option is not available and will not appear in the menu. If the PM Patrol Password is set, then you will be prompted to enter the correct password before PM Patrol is shutdown. The Normal OS/2 Shutdown option is an alternate way to perform a normal OS/2 shutdown. If the PM Patrol Password is set, then you will be prompted to enter the correct password before a shutdown is granted. The Forced OS/2 Shutdown option is used when the normal OS/2 shutdown procedure is unresponsive and will shutdown OS/2 active file systems. This should be used as a last resort. If the PM Patrol Password is set, then you will be prompted to enter the correct password before a forced shutdown is granted. Note: This forces a proper OS/2 shutdown for all active file systems and open files, but does not perform a WorkPlace Shell shutdown. Any recent changes to the OS/2 desktop since the last normal OS/2 shutdown may not be saved. ═══ 11.7. Display ═══ The Open Monitor Windows option opens and activates all PM Patrol Monitor windows including Process Monitor, Memory Monitor, and Network Monitor. This provides quick access to these popular monitor windows of PM Patrol. The Close Monitor Windows option closes all PM Patrol Monitor windows including Process Monitor, Memory Monitor, and Network Monitor. The Suspend Status Line option freezes the Status Line display until you Resume the display. The Hide Status Line option hides the Status Line display until you re-select it from the OS/2 Window List. While hidden, all active PM Patrol operations continue unless the display has been "suspended". This option is convenient for those who wish to temporarily view the desktop window below PM Patrol or for security purposes. The Refresh Status Line option immediately forces PM Patrol to re-sample and refresh all items being monitored on the PM Patrol main Status Line. The Reset Internet Time option allows you to reset the Internet Connect-Time to zero. This can be useful for tracking and costing Internet access. ═══ 11.8. Utilities ═══ This menu contains several additional utilities that are always 1 click away ═══ 11.8.1. Sleep Now ═══ The Sleep Now option places the mobile computer (SL chips) into suspend mode. This option is accessible only when APM (Advanced Power Management) is installed and the user is not logged-on to the LAN Server for workstations connected to a LAN Server network. Refer to the OS/2 Installation Guide for APM details. ═══ 11.8.2. Fast Find ═══ The Fast Find option provides a way to find files on a particular disk drive. A number of search constraints are available such as finding 32-bit, open files, and files with a combination of attributes set (Read Only, Hidden, etc.). Enter the desired drive and file/pattern to search for. Click "Find" (or Enter] to begin the search. Click "Stop" to cancel the search. Select "All Drives" to search for files across all drives currently on-line. Note: Refer to the "FF" command line utility also shipped with PM Patrol for searching and collecting files from the command line. Note: Refer to the "FDUPS" command line utility also shipped with PM Patrol for searching and collecting files that are duplicate from the command line. The container control in the Fast Find window supports right-click popups for quick access to "Action" items and double-click selections. Double-clicking in the Fast Find window invokes "Edit", "View", or "Execute" options for the item selected. If the item is a multimedia WAV file, the WAV file is played. The "Last Write" and "Last Access" days allow you to specify a number of days that the file must meet or exceed (>=) for the Fast Find facility to collect. This is advantageous when searching for inactive files for LAN administration. Note: The "Last Access" date is only applicable to file systems that support this attribute, such as HPFS. FAT does NOT support this file system attribute and therefore use of "Last Access" days should be avoided. The "File Size" field provides that ability to narrow the search and look for files where the file size meets or exceeds a given size. This size is specified in terms of Kilobytes (KB). For example, If your're searching for files greater than or equal to 512K, then enter 512. Additional search criteria allows you to narrow the search for: 1. "OS2/Win" files. These are files that are OS/2 PM and Windows files using Win API calls. Files include *.DLL, *.EXE, *.SYS and more. 2. "32-Bit" files. These are files that are 32-bit OS/2 files. Files include *.EXE, *.DLL, *.SYS, and more. 3. "Opened" files. These are files that are currently open and in use by other OS/2, DOS, or Windows programs. 4. "DOS" files. These are files that DOS only files and include *.EXE, *.COM, and more. Note: Searching for files with the above specified attributes causes overhead and should be used selectively. Searching for "Opened" files causes considerable overhead and could take several minutes to complete the search. Also provided is the ability to restrict the search to finding only files with particular file attributes. Such as Hidden, Read-Only, and more. Selecting these items causes a "RESTRICTIVE" search - not "INCLUSIVE". You can customize the display items (file slack size, file EA size, last write and access dates) in the "View" menu option. These settings will be saved automatically when PM Patrol is shutdown. There are several "Action" items that are provided. These include the ability to "Edit", "View", and "Delete" files that are selected. To select items, simply single click the item or "Select All" items in the list. Be careful of the "Delete" option. It works well - even if the file is marked as read-only, the files will be deleted. A popup message box is displayed to confirm your "Delete" request. The "File" and "Edit" options operate the same way as in the "Process Monitor","Drives Monitor", System Info" windows, and all others. These options allow you to copy/append to the clipboard, save list to a file, or print list to a printer. The Fast Find facility allows you to specify that search operations should always run at a low priority - only when there is little OS/2 activity. This can be specified in the "General Settings" setup and may be desirable for LAN administration functions. This is identified by "Idle Time Searches". ═══ 11.8.3. Fast Help ═══ The Fast Help option provides very fast access to a complete list of OS/2 Information (.INF) and Help (.HLP), and DOS+Windows (.HLP) files that are on-line and available for viewing. Accessed from the PM Patrol Utility menu, the Fast Help feature creates a "Help Data Base" the first time it's accessed. Stored where PM Patrol is installed, the help data base refresh can take a minute to build. Subsequent invocations of the Fast Help window do not auto-refresh the help data base. It is up to you when you wish to refresh the data base. PM Patrol searches ALL drives on-line when refreshing the help data base. Via the "View" menu item, you can filter-out duplicate help files to make navigating the list a bit easier. To view a on-line help file, simply double click on the file in the list. DOS+Windows help files are always viewed seamlessly on the OS/2 desktop. The "Filter" options operate in the following manners: 1. The "Filter Duplicates" removes duplicate help files from the window list. As a result, only unique help files are displayed. 2. The "Filter OS/2 Files" removes OS/2 specific help files (both .INF and .HLP) from the window list. As a result, only DOS+Windows help files are displayed. 3. The "Filter Win Files" removes DOS+Windows specific help files (.HLP) from the window list. As a result, only OS/2 help files are displayed. Note: Limitation with OS/2 .HLP help files. Due to the nature of OS/2 .HLP help files, only one of these help files can be viewed at a time through PM Patrol's Fast Help facility. If another .HLP help file is selected, the previous .HLP help file will be closed down. There are no limitations with OS/2 .INF or DOS+Windows .HLP help files. ═══ 11.8.4. System Info ═══ The System Info displays 3 basic types of information: 1. OS/2 System information displays the basic configuration of OS/2 and the hardware present on your system. Many of the items are static and don't change while OS/2 is operating. Many of these items are modifiable in the CONFIG.SYS. Refer to OS/2 help for more detail. 2. Presentation Manager colors. These can be modified via the "Color Palette" in the OS/2 "System" folder. 3. Presentation Manager information displays items specific to PM. Many of these can be modified in the "Setup" folder of the WorkPlace Shell. ═══ 11.8.5. Scheduler ═══ The Scheduler option provides quick access to user definable programs that are to be run at specified times. Using the "Scheduler Settings" dialog, you can add up to 128 of programs to run at specified times. Similar in function to the UNIX CRON utility, the "Scheduler" provides the ability to run any program at user specified days and times. The "Scheduler Settings" dialog allows you to specify: 1. The "Program Name". Duplicate names are allowed. This field is a required field in order for the entry to appear on the program popup menu. 2. The "Path and File Name" for the executable (.EXE or .COM). To invoke the OS/2 command prompt enter "CMD.EXE". This field is a required field in order for the entry to appear on the program popup menu. 3. The "Parameters" field allows you to enter any program parameters that may be required by the program you want to run. You can have PM Patrol prompt you for parameters when the scheduler launches the program by entering a '?' as the first character in the "Parameters" field. Place default parameters after the '?' if desired. This will invoke a dialog box when the program is scheduled to run and allow you to enter new parameters. 4. The "Working Directory" informs the scheduler what the default drive and directory are to be when the program gets launched. The "Resort" button allows you to sort the program list. PM Patrol will automatically keep the list sorted for you. While your adding programs to the list in this window, PM Patrol will NOT automatically resort the list while your're working on it. Therefore, this "Resort" button gives you the option as to when you want to see it resorted. When you close this window, the list is automatically resorted for you. The "Session" group allows you to further control HOW you wish to run the program: as native OS/2 PM, Windows session, full screen, DOS, and more. Except for DOS/Windows programs, use "Default" when your're unsure. 1. The "Win Enh" item identifies a Windows 3.1 Enhanced program and will be run as a "seamless" Windows session in "unprotected mode" (same session). 2. The "Win Std" item identifies a Windows 3.1 Standard program and will be run as a "seamless" Windows session in "unprotected mode" (same session). The "Window" group allows you to start the program in a minimized state. Some programs may resist the minimized state when their invoked. The "Activate Program" option allows you to indicate that the Scheduled Entry is "active" or "inactive". The program will only get launched when this is selected. The "Priority" group allows you advanced process control over a program's OS/2 priority. This includes both priority "Class" as well as the priority "Range" within the Class. Within the "Class" control, you can select 1 of 4 different classes: 1. "Regular" Class identifies a "normal" setting and is the default. This should typically be used for most programs. If your're unsure of the Class setting, use "Regular". 2. "Idle" class indicates that a program should only execute when nothing else is running. Typically used for carefree background processes. 3. "Foreground" class indicates that a program should execute at a fixed-high priority, but below time critical as if it were the "active" window. Net effect of this class makes the process operate at near time-critical performance. 4. "Critical" Class identifies a program as a "Time Critical" process. Understand that selecting this may cause other programs running to execute slower. The "Range" operates within the selected "Class" and you can select 1 of 4 different Range priority levels within each Class. 1. "Regular" Range identifies the "normal" and default priority setting within the Class selected. This should typically be used for most programs and is the default. If you are unsure of the Range setting, use "Regular". 2. "Low" Range identifies the lowest possible priority setting within the Class selected. Low and Regular have identical effects. This was chosen by design to avoid confusion as to what was a "normal" Range setting. 3. "Medium" Range indicates a midpoint priority level between the Low and High Ranges. 4. "High" Range indicates the highest possible priority within the class selected. Note: Use "Regular" for both Class and Range settings when the priority requirement of the process is unknown; this should be used as the default in all situations. You should rarely (if ever) set the priority combination to "Critical" Class and "High" Range settings. Doing so could likely bring OS/2 to its knees for a very CPU bound program. Note: Once launched, a program can change its own priority Class and Range settings. This means that PM Patrol sets the program's "default" priorities with those that you select, but does not control it after the program has been launched. A good example of this is running Windows programs. The Win-OS/2 environment will typically change the priority to "Regular" for both Class and Range. The "Schedule" group provides you the ability to specify the time the program is to be launched. All programs are launched in the "background" and NOT the foreground session. The time to launch can be specified by selecting the desired Month, Week Day, Hour, and Minute. Event time permutations are as follows: 1. Month: provides "Every" month or a specified month (January through December). 2. Week Day: provides "Every" day, specified day (Sunday through Saturday), weekdays (Monday through Friday), or weekends (Saturday and Sunday). 3. Hour: provides "Every" hour or a specified hour (12:00 AM through 11:00 PM). 4. Minute: provides "Every" minute or a specified minute (0 through 59). The "Termination" option allows you specify a scheduled job or program to be terminated after a specified duration of time (hours and minutes). When hours and minutes are set to zero, the default, the program will not be terminated by PM Patrol. Hours specifies the number of hours that must elapse before termination. You may specify zero, or a value between 1 and 168 (1 week). Mins specifies the number of minutes that must elapse before termination. You may specify zero, or a value between 1 and 59. Termination of a process is done with extreem prejaduce; the program is "killed" without a graceful shutdown. For some programs, this is not a problem. A DBug is generated when a process is started or terminated in PM Patrol. You may use the DBug facility built into PM Patrol for monitoring and logging Scheduler events. Note: Accuracy of when the actual termination occurs can vary by as much as 15 seconds and is directly depandant on the Refresh Settings for Process Monitors. This varience will never be less than the scheduled termination - only more. The termination settings can be adjusted after the program has been launched. Be careful when adjusting the system time while Scheduled programs are active which have a termination time. Be aware, adjusting the system time backwards (losing time) will cause the program to terminate sooner. Note: The "Prcess Metering" option in PM Patrol (found in General Settings) MUST be enabled for "Termination" functionality of the Scheduler. If you have Scheduled programs that have a specified termination, be sure to enable the Process Metering option. The "Action" item in the menu allows you to Add, Delete, or Run the highlighted program in the "Program List". To change an existing program's properties, simply select the program in the list, then change the desired fields for the program. Changes are immediate. Alternately, you can click the right mouse button while the mouse pointer is positioned over the "Program List" to get a quick access popup menu to the actions. ═══ 11.8.6. WorkPlace Classes ═══ The WorkPlace Classes option provides quick access to all registered WorkPlace Shell class objects and provides the ability to register new classes or deregister classes no longer needed. Note: Typically used by developers, this facility should be used with caution. DO NOT deregister classes without careful consideration. Deleting some classes may render your OS/2 WorkPlace shell inoperable. The "Class Name" represents the object class name as registered and known by the OS/2 WorkPlace Shell. The "Module Name" represents the DLL or SOM library which contains the object methods associated with the class. To deregister a class, simply highlight the class name from the list and select the "Deregister Class" option in the "Action" menu. Likewise, to register a new class to the WorkPlace shell, select "Register Class" from this same menu. Enter the new class name and library module. The Library module must be a fully qualified drive, path, and file name of the DLL. ═══ 11.8.7. Fast Format ═══ Fast Format performs a very fast format for diskettes (drives A or B) that are ALREADY formatted. This is much faster, and easier, than manually deleting files off a diskette or reformatting. You'll be surprised how often this proves useful. This option will work on all diskette types (720KB, 1.44MB, and 2.88MB). In order to support all current and future read/writable media types (and extended attributes), PM Patrol employs a Fast Format method that is affected by the number of preexisting files on the disk media. The more files on the disk, the longer it may take to complete the Fast format. The Fast Format operation usually takes several seconds. Since the Fast Format allows concurrent access to the disk while formatting, files or directories that are open will not be removed. Only logical drives A and B are currently supported. Fast Format also allows you to specify a new volume label name. ═══ 11.9. Command Line Utilities ═══ Packaged with PM Patrol are several OS/2 32-bit Command Line utilities. These utilities complement the PM Patrol personality. ═══ 11.9.1. FF (Find Files) ═══ This utility is accessed from the OS/2 command prompt window. If the "Bonus" option was selected at PM Patrol installation, then this utility is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. It provides the same functionality and features as the "Fast Find" facility of PM Patrol. FF enables you to search for files across multiple drives regardless of the number of files. Like the "Fast Find", FF is a turbo charged "find files" utility. The syntax for "FF" is: FF filespec [/R /H /S /A /D /O /E /LN /SN /AD /LA /LW /SK] /R read only attr /H hidden attr /S system attr /A archive attr /D directory attr /O open files /E erase files /LN long file names /SN short file names /AD all drives /LAn n days since access /LWn n days since write /SKn >= n Kbytes in size ? help "filespec" represents a File Pattern where wild cards are allowed. The default File Pattern is "*" for all files. ═══ 11.9.2. FDUPS (Find Duplicates) ═══ This utility is accessed from the OS/2 command prompt window. If the "Bonus" option was selected at PM Patrol installation, then this utility is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. The "FDUPS" utility finds duplicate files by comparing the file name, size and/or last write date. Between these options, you expect a very high confidence level that 1 or more files are duplicates. The "FDUPS" utility takes several minutes to run depending on the number of files on the disk drive being searched. Select the /i option to make FDUPS run at idle time - when there is little OS/2 activity. The syntax for "FDUPS" is: FDUPS filespec [/S, /D, /A, /I] /S include size comparison /D include date comparison /A search all drives /I run at idle time ? help "filespec" represents a File Pattern where wild cards are allowed. The default File Pattern is "*" for all files. ═══ 11.9.3. FDUMP (File Dump) ═══ This utility is accessed from the OS/2 command prompt window. If the "Bonus" option was selected at PM Patrol installation, then this utility is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. The "FDUMP" utility will dump the contents of any file displaying the ASCII and HEX representation of each byte in the file. This utility provides the ability to specify the format of the output in either a vertical or horizontal fashion. Furthermore, where binary files have specific record lengths, FDUMP allows you to specify this as well. The output from FDUMP is displayed on the screen but can be redirected using the ">outfile" parameter. The syntax for "FDUMP" is: FDUMP filespec [/R=] [/H|/V] "filespec" represents a file name to examine. This must be specified. "/R=nn" tells FDUMP to dump the contents of the file using nn record length. "/H" tells FDUMP to dump the contents of the file in horizontal mode. This is the default used by FDUMP. "/V" tells FDUMP to dump the contents of the file in vertical mode. ═══ 11.9.4. PIDKILL (Kill OS/2 Process) ═══ This utility is accessed from the OS/2 command prompt window. If the "Bonus" option was selected at PM Patrol installation, then this utility is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. The "PIDKILL" utility allows you to terminate (UNIX-kill 9) a OS/2 program and all its threads. "PIDKILL" takes 1 parameter: the PID to kill. This PID value can be identified by using the PM Patrol Process Monitor window or using the OS/2 "PSTAT" command line utility shipped with OS/2. Note: A PID that is "blocked" (waiting on another OS/2 resource) may not always be able to be "killed". Repeat attempts may be necessary. The syntax for "PIDKILL" is: PIDKILL pid "pid" represents a HEX value as identified in the PM Patrol Monitor window or the OS/2 command line utility "PSTAT". Note: Recall that the PM Patrol Process Monitor window also allows you to "Kill" PIDs. ═══ 11.9.5. QMGMT (Queue Management) ═══ This utility is accessed from the OS/2 command prompt window. If the "Bonus" option was selected at PM Patrol installation, then this utility is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. The "QMGMT" utility allows you to perform various Print Spooler Queue management functions similar to Print Spooler functions available in the PM Patrol program. These functions include purging, releasing, holding, and deleting 1 or more spooler queues. The syntax for "QMGMT" is: QMGMT qname [options] "qname" represents the queue to act upon. Enter a queue name or default to ALL queues. "options" represents 1 of the actions to perform on the print queue. By default, QMGMT will report summary information (/I) and status of the queue(s). ═══ 11.9.6. PMPSDOWN (PM Patrol Shut Down) ═══ This utility is accessed from the OS/2 command prompt window. If the "Bonus" option was selected at PM Patrol installation, then this utility is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. The "PMPSDown" utility allows you to shut down PM Patrol and optionally specify how long (in seconds) to wait before the shutdown occurs. This utility returns 0 is successful, and 1 if not (ie. PMP was not active at the time). If no delay is specified, PM Patrol will be shutdown immediately. The syntax for "PMPSDown" is: PMPSDown [seconds] ═══ 11.9.7. MSGBOX (Message Box Popup) ═══ This utility is accessed from the OS/2 command prompt window. If the "Bonus" option was selected at PM Patrol installation, then this utility is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. The "MsgBox" utility allows you to popup of message box with text and buttons of your choice. Ideal for the PM Patrol Scheduler. The syntax for "MsgBox" is: MsgBox text [/A /Tt /Dn /Bn] text Any text of your choice (up to 1K in length) /A Sound alarm /Tt Title where t=text /Dn Timeout delay (milliseconds) /Bn Button types, where n= 1=Ok 6=Retry,Cancel 2=Ok,Cancel 7=Abort,Retry,Ignore 3=Cancel 8=Yes,No 4=Enter 9=Yes,No,Cancel 5=Enter,Cancel Return Codes: 1=OK selected 5=Ignore selected 2=Cancel selected 6=Yes selected 3=Abort selected 7=No selected 4=Retry selected 9=Enter selected ═══ 11.9.8. PMPREG (PM Patrol Registration) ═══ This utility is accessed from the OS/2 command prompt window and is installed into the PMP subdirectory. To allow this utility to be invoked regardless of the current working directory, alter the CONFIG.SYS file and add PMP to the end of the PATH statement. The "PMPReg" utility is provided with PM Patrol to allow command-line registration of the product and is useful under situations which require setup or configuration of PM Patrol for pre-loads, batch, and/or remote setup. There are no command-line options for this tool. PMPReg will simply ask for your name and serial number and complete the registration process. For batch situations, this tool returns 0 upon success or 1 otherwise. All output is send to stdout. ═══ 12. Data Collection Facility ═══ This section discusses the Data Collection Facility (DCF) of PM Patrol. ═══ 12.1. DCF Definition ═══ The Data Collection Facility (DCF) of PM Patrol is a high performance data acquisition and statistics collecting engine. This engine is one of the by-products of PM Patrol and used by PM Patrol itself. Available to PM Patrol users is a simple API set allowing the C/C++ programmer access to this statistical data. The engine is ALWAYS gathering statistics regardless of what monitor items have been selected for the PM Patrol Status Line display window. These include all monitor items possible in PM Patrol along with others that are not monitorable by the PM Patrol Status Line. The DCF engine causes no extra overhead as it is a integral component of PM Patrol. API interface calls to the DCF engine are extremely fast. Memory to hold the statistics is always resident because PM Patrol is constantly updating it. ═══ 12.2. DCF Programming Files ═══ The PM Patrol software contains 3 files for DCF programming purposes: 1. PMPAPI.H is a C/C++ header containing all constants, definitions, structures, and the like. "Include" this header file in your C/C++ programs. 2. PMPAPI.LIB is the Import Library to link with to resolve DCF APIs. You must link (LINK386) with this Import Library to resolve external references and is specified in the LINK386 options. 3. PMPAPI.DLL is the Dynamic Link Library which holds the actual code of APIs For compiling and linking, append the installation path used for PM Patrol to the following statements in your CONFIG.SYS file: 1. "LIB" statement for the API import library (PMPAPI.LIB). 2. "INCLUDE" statement for the API C/C++ header (PMPAPI.H). Make sure the PM Patrol DLL is available at run time by appending the installation path used for PM Patrol to the following statements in your CONFIG.SYS file: 1. "LIBPATH" statement for the API DLL (PMPAPI.DLL). ═══ 12.3. DCF API Set ═══ This section describes in detail the API set for interfacing with PM Patrol Data Collection Facility. ═══ 12.3.1. DCFGetStats() API ═══ This API provides the ability to retrieve the PM Patrol real-time statistics. These statistics are maintained in a shared memory segment and retrieval with DCFGetStats() is therefore VERY fast. However, it is highly recommended that this API be called no more frequently that once per second. Since PM Patrol updates this structure at most once per second, calling this API more frequently than PM Patrol updates it would be useless and waste CPU. Prototype: APIRC DCFGetStats (PDCFSTATS pDCFStats) Parms: PDCFSTATS ... Address of DCFSTATS structure Returns: DCF_NO_ERROR ... Successful with no errors DCF_PARM_ERROR ... Invalid parm specified DCF_INACTIVE_ERROR ... DCF not active Notes: Statistics are updated at frequencies defined in the PM Patrol "Refresh Settings" dialog under "Settings" options. Refer to PMPAPI.H for statistical items collected by DCF. Example: Query current statistics and display drives on-line _________________________________________________________________________ #include #include #include INT main(INT argc, CHAR **argv) { APIRC rc; /* API return code */ PDCFSTATS pDCFStats; /* pointer to DCF statistics buffer */ /* allocate memory for statistics buffer */ pDCFStats=(PDCFSTATS) malloc(sizeof(DCFSTATS)); /* retrieve current statistics */ rc=DCFGetStats(pDCFStats); if (rc==DCF_NO_ERROR) printf("Drives On-line: %s\n", pDCFStats->drivesOnLine); else printf("PM Patrol DCF not active right now.\n"); /* exit program with return code */ return rc; } ═══ 12.3.2. DCFUserDefined() API ═══ This API provides the ability to post a user defined monitor to PM Patrol for display on the Status Line. It is highly recommended that this API call be issued no frequently that once per second. The maximum length of the buffer is 20 bytes. PM Patrol will force this if the length exceeds this limit. Prototype: APIRC DCFUSerDefined (PCHAR buffer) Parms: PCHAR ... Address of user defined monitor buffer Returns: DCF_NO_ERROR ... Successful with no errors DCF_PARM_ERROR ... Invalid parm specified DCF_INACTIVE_ERROR ... DCF not active Example: Tell PM Patrol to display your name on the Status Line _________________________________________________________________________ #include #include #include INT main(INT argc, CHAR **argv) { APIRC rc; /* API return code */ /* post monitor buffer to PM Patrol */ rc=DCFUserDefined("My name is Dave"); if (rc==DCF_NO_ERROR) printf("PMP will show my name on the Status Line\n"); else printf("PM Patrol DCF not active right now.\n"); /* exit program with return code */ return rc; } ═══ 12.3.3. DCFVerify() API ═══ This API provides the ability to verify the active state of PM Patrol's Data Collection Facility. Prototype: BOOL DCFVerify (void) Parms: None Returns: TRUE ... DCF active FALSE ... DCF not active Example: Print status of the DCF _________________________________________________________________________ #include #include #include INT main(INT argc, CHAR **argv) { BOOL activeInd; /* active indicator */ /* verify state */ activeInd=DCFVerify(); if (activeInd==TRUE) printf("PM Patrol DCF is active\n"); else printf("PM Patrol DCF is not active\n"); /* exit program with active status */ return (INT) activeInd; } ═══ 12.3.4. PMPShutDown() API ═══ This API will completely shutdown PM Patrol and the Data Collection Facility. Prototype: BOOL PMPShutDown (void) Parms: None Returns: TRUE ... Successful with no errors FALSE ... PM Patrol not active Example: Shutdown PM Patrol _________________________________________________________________________ #include #include #include INT main(INT argc, CHAR **argv) { BOOL shutdownInd; /* shutdown and print message */ shutdownInd=PMPShutDown(); if (shutdownInd==TRUE) printf("PM Patrol and DCF now shutdown.\n"); else printf("PM Patrol not active.\n"); /* exit program with shutdown status */ return (INT) shutdownInd; } ═══ 13. Debug Facility ═══ This section discusses the Debug Facility integrated with PM Patrol. ═══ 13.1. DBug Definition ═══ DBug is a flexible and easy to use real-time debugging for the software engineer/developer that provides debugging capabilities that are impossible for the source-level debugger, easier to use, and often more convenient. The concept of DBug is simple. You place 1 or more "DBUG" statements in your program source code at a strategic point for the purpose of displaying a message, the content of variables or memory, or time stamping a point of entry. Compile and run your program(s). While or after running your program(s), you can view the current results via the "DBug" window or view the DBug log file to browse your DBug results. ═══ 13.2. Using DBug ═══ When you compile your programs you include the C/C++ header file "dbug.h" and specify the compiler directive "-DDEBUG". You must link your program with the DBug Import Library "DBUGAPI.LIB" to resolve externs. Once you're done testing and want to remove the DBUG statements for "production" use, you may: 1. Recompile your program(s) WITHOUT specifying the compiler directive "-DDEBUG". The compiler will ignore the DBUG statements. Linking with "DBUGAPI.LIB" is now unnecessary. 2. Manually remove each DBUG statement. Recompile and link. Our recommendation is that you leave the "dbug.h" include file in the program(s) and choose option 1 above. This allows you to, with just a recompile, have your run-time debugging enabled quickly for testing. DBUG statements are C/C++ macros which map to a single API. There is a "generic" DBUG macro for any use, and specific macros for each unique standard C data type: 1. The DBUG macro is generic and allows you to display the contents from any data type as well as any chunk of memory. 2. The DBUGM macro displays a simple message of your choice. 3. The DBUGS macro displays the contents of a SHORT data type. 4. The DBUGL macro displays the contents of a LONG data type. 5. The DBUGI macro displays the contents of a INTEGER data type. 6. The DBUGD macro displays the contents of a DOUBLE data type. 7. The DBUGC macro displays the contents of a CHAR data type. 8. The DBUGZ macro displays the contents of a STRING data type. 9. The DBUGP macro displays the contents of a POINTER data type. 10. The DBUGOPEN macro opens a new DBug log file. 11. The DBUGCLOSE macro closes the DBug log file. 12. The DBUGSTOP macro terminates the DBug facility. Each DBUG statement will cause an IPC message to be build and sent to the central DBug program. The DBug program will then display the message in his standard format and log it for later recall - if logging is turned on. If the DBug program is not presently running to receive these requests, your DBUG statements will be ignored at run-time. The effort required to complete a single DBUG within your program(s) is very minimal and insignificant. The DBug program can be started and stopped at any time - even when programs are actively DBUGing. If restarted, DBug will continue pulling DBUGs from his queue and displaying/logging them. DBug will handle bursts of DBUGs easily as it offers a 256K maximum buffer. DBug will only allocate/commit enough memory to hold each DBUG request - not the whole 256K. The 256K buffer is therefore used optimally and requires little real memory from OS/2. When monitoring DBug, minimize the window if large amounts of DBUGs are be displayed. This will significantly improve how fast DBug displays and reduce the overhead of displaying results. DBug has two log files and are created in the drive/directory where DBug was started. If started and controlled from PM Patrol, these log files will reside in the directory from where PM Patrol was installed and started. 1. The primary and active log "DBUG.LOG" contains current data. 2. The backup log "DBUG.BAK" contains the previous primary data after a new log file is opened. When logging is opened, a DBUG message is placed at the beginning of the DBug log file. Note: DBug log files are automatically recycled at midnight so that under continuous operation, each log will contain a full 24 hours of information. Therefore, up to 2 days (primary and backup) of DBug information can be reviewed any time. If Dbug has nothing to do, absolutely no CPU is used. The small amount of DBug memory requirements are "swappable" to make room for more active demanding programs. DBug is a high performance debugging tool for even the most intense environments. When the Dbug window is minimized or DBug is running in "Quiet" mode, DBug can handle several hundred DBUGs per second, even more for highend Pentium or PowerPC processors. ═══ 13.3. DBug Programming Files ═══ The DBug software contains 3 files for DBug programming purposes: 1. DBUG.H is a C/C++ header containing the macros for DBug. "Include" this header file in your C/C++ programs. 2. DBUGAPI.LIB is the Import Library to link with to resolve DBUG APIs. You must link (LINK386) with this Import Library to resolve external references and is specified in the LINK386 options. 3. DBUGAPI.DLL is the Dynamic Link Library which holds the actual code of APIs For compiling and linking, append the installation path used for PM Patrol to the following statements in your CONFIG.SYS file: 1. "LIB" statement for the API import library (DBUGAPI.LIB). 2. "INCLUDE" statement for the API C/C++ header (DBUG.H). Make sure the DBug DLL is available at run time by appending the installation path used for PM Patrol to the following statements in your CONFIG.SYS file: 1. "LIBPATH" statement for the API DLL (DBUGAPI.DLL). ═══ 13.4. DBug Macro Set ═══ This section describes in detail the C/C++ macro set for using the Debug Facility. ═══ 13.4.1. DBUG() Macro ═══ The DBUG macro is generic and allows you to display the contents from any data type as well as any chunk of memory. Prototype: ULONG DBUG (PVOID address, USHORT size, PCHAR note) Parms: address ... Address to displayed/dumped size ... Size of data type or memory to be display note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... CHAR array[60]; DBUG(array, sizeof(array), "my array"); ═══ 13.4.2. DBUGM() Macro ═══ The DBUGM macro displays a simple message of your choice. Prototype: ULONG DBUGM(PCHAR message) Parms: message ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... DBUGM("Point 1 of program"); ═══ 13.4.3. DBUGS() Macro ═══ The DBUGS macro displays the contents of a SHORT data type. Prototype: ULONG DBUGS(PSHORT address, PCHAR note) Parms: address ... Address of short to be displayed note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... USHORT variable; DBUGS(&variable, "my variable"); ═══ 13.4.4. DBUGS() Macro ═══ The DBUGL macro displays the contents of a LONG data type. Prototype: ULONG DBUGL(PLONG address, PCHAR note) Parms: address ... Address of long to be displayed note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... LONG variable; DBUGL(&variable, "my variable"); ═══ 13.4.5. DBUGI() Macro ═══ The DBUGI macro displays the contents of a INTEGER data type. Prototype: ULONG DBUGI(PINT address, PCHAR note) Parms: address ... Address of integer to be displayed note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... INT variable; DBUGI(&variable, "my variable"); ═══ 13.4.6. DBUGD() Macro ═══ The DBUGD macro displays the contents of a DOUBLE data type. Prototype: ULONG DBUGD(PDOUBLE address, PCHAR note) Parms: address ... Address of double to be displayed note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... DOUBLE variable; DBUGD(&variable, "my variable"); ═══ 13.4.7. DBUGC() Macro ═══ The DBUGC macro displays the contents of a CHAR data type. Prototype: ULONG DBUGC(PINT address, PCHAR note) Parms: address ... Address of char to be displayed note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... CHAR variable; DBUGC(&variable, "my variable"); ═══ 13.4.8. DBUGP() Macro ═══ The DBUGP macro displays the contents of a POINTER data type. Prototype: ULONG DBUGP(PVOID address, PCHAR note) Parms: address ... Address of pointer to be displayed note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... PVOID variable; /* display pointer value */ DBUGP(&variable, "my variable"); /* display memory contents of size 2048 bytes */ DBUG(variable, 2048, "my variable memory"); ═══ 13.4.9. DBUGZ() Macro ═══ The DBUGZ macro displays the contents of a STRING data type. Prototype: ULONG DBUGZ(PVOID address, PCHAR note) Parms: address ... Address of string to be displayed note ... A personal description of your choice Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... CHAR variable[32]="Hello world"; DBUGZ(variable, "my variable"); ═══ 13.4.10. DBUGOPEN() Macro ═══ The DBUGOPEN macro opens a new DBug log file. Prototype: ULONG DBUGOPEN(VOID) Parms: None Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... DBUGOPEN(); ═══ 13.4.11. DBUGCLOSE() Macro ═══ The DBUGCLOSE macro closes the DBug log file. Prototype: ULONG DBUGCLOSE(VOID) Parms: None Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... DBUGCLOSE(); ═══ 13.4.12. DBUGSTOP() Macro ═══ The DBUGSTOP macro terminates the DBug Facility. Prototype: ULONG DBUGSTOP(VOID) Parms: None Returns: NO_ERROR ... Successful with no errors, or error code Example: _________________________________________________________________________ #include #include #include ... DBUGSTOP(); ═══ 13.5. DBug Output ═══ The following is a sample output from the DBug Facility. Sample output ------------------------------------------------------------------------ From: PID 00a3 At 21:06:42 DBUG.CPP (line 474) Note: DBug log opened. Type: INFO, 0 bytes (0 qCnt) ------------------------------------------------------------------------ From: PID 00a8 At 21:07:10 TEST.C (line 22) Note: sample DBUGs Type: INFO, 0 bytes (3 qCnt) ------------------------------------------------------------------------ From: PID 00a8 At 21:07:10 TEST.C (line 23) Note: my return code (little endian) Type: LONG, 4 bytes (2 qCnt) 0000: 00 00 00 00 |.... | ------------------------------------------------------------------------ From: PID 00a8 At 21:07:10 TEST.C (line 24) Note: a chunk of memory Type: VOID, 120 bytes (1 qCnt) 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 0040: 00 00 00 00 00 00 00 00 00 00 43 44 45 46 00 00 |..........CDEF..| 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 0060: 00 00 00 00 00 43 00 00 00 00 00 00 00 00 60 c6 |.....C........`.| 0070: a2 41 00 00 00 00 10 59 |.A.....Y | ------------------------------------------------------------------------ From: PID 00a8 At 21:07:10 TEST.C (line 25) Note: my double value Type: DOUBLE, 8 bytes (0 qCnt) 0000: 33 33 33 33 b3 00 ab 40 |3333...@ | ------------------------------------------------------------------------ Using the last DBUG for example, the DBug output contains four (4) main sections: 1. The From section identifies who (what program) the DBUG was sent from: a. The Process ID (as hex) b. The time the DBug was issued (not received and displayed/logged). c. The program source code name and line number of the DBUG statement within the program source. 2. The Note section is where your personal note/description from the DBUG statement is displayed. 3. The Type section identifies the data type displayed, the number of bytes for the data, and how many DBUG statements remain in the DBug queue to be displayed (qCnt): a. These include all standard data types such as DOUBLE, CHAR, PCHAR, INT, and so on. b. VOID is displayed when a "memory chunk" is displayed. c. INFO is displayed when just a DBUGM (Message) statement is issued. 4. The last section displays the contents (in hex and ASCII representation) of the data type. The left most column of this section is the offset starting at zero. ═══ 14. Performance and Tuning ═══ This document makes an assumption that the reader is familiar with OS/2 Warp. It presents general and specific tuning information for a computer that will have or has had OS/2 Warp installed. ═══ 14.1. General Setup Considerations ═══ There are some basic considerations that need to be made about the computer that you will install Warp on. It breaks down into 3 elements: processor, memory and disk. These three major elements, interestingly enough, have remained the three major elements since the computer was first developed. In most cases the processor that you have in your system has a minimal impact on performance compared to the amount of memory and the speed of the disk. The only real considerations to make with respect to processor are its age. You want to avoid 386 and 386SX processors. You want processors that can be upgraded and those that support instruction caching sometimes referred to as Level 1 or Level 2 cache. There really is no optimum level instruction cache size. More instruction cache is usually better than less. The only real determinant should be costs. Memory, also called RAM, is a different story. Without enough memory your system will run slowly. If you cannot afford to buy memory for your system, then you must manage the things you install. You only want to install fonts, device drivers, objects and applications that you will actually use. You may think that just because you have not started an installed application, it is not using any memory. This is not always the case. Many newer OS/2 applications will register classes and objects with the WorkPlace Shell or add items into path statements, set statements and the like. Many of these things will cause memory to be used even when the program is not running. In some cases, the program will require special device drivers be installed which also use up memory. Other things that affect memory usage are disk cache, CDROM cache, multimedia support and file buffers. The important factor to consider for the disk cache, is that it is designed for general use. Since most systems are not general use, the disk cache should be tuned to the specific system environment to optimize memory usage. We will discuss the disk cache considerations in more detail when we look at the file system options. In addition to RAM and the CPU, one of the most important pieces of hardware on your system is the hard disk. It will affect the performance of starting your system, loading applications, the speed of applications, and the general performance of your system. It is best to have a disk subsystem which uses a bus-mastering type of adapter. Many SCSI devices and some of the PCI devices have this capability. These types of devices allow for multiple requests to be sent to the disk device to be processed rather than just one command or function at a time. They also allow what is called scatter/gather capabilities. Without bus mastering, data that is transferred between the computer's memory and the disk must be in contiguous memory, one byte after the other. With bus mastering, the data does not have to be contiguous and does not have to be on a 64K byte boundary. Bus-mastering relieves the system of a lot of overhead and therefore performs faster in actual usage, although you will see little or no difference when running benchmarks. When the memory in your system is overcommitted, that is, the operating system and the applications you are running need more memory than is physically available in your computer, Warp will page, or swap, code and data that has not been accessed for a while to the disk in order to make room for the needed code and data. In this instance, the disk is the single most important factor in your system with respect to performance. Other considerations with regard to the disk is whether or not it has its own caching. If it does and your applications perform mainly sequential disk access, then you can reduce the size of your software disk cache. However, this is subject to the amount of cache installed on the controller. Usually, 256 KB cache is a minimum necessary setting for disk cache. Hardware disk cache will have little or no effect when the programs perform random disk operations. The hardware cache will improve the performance of starting the Warp operating system and the applications. Run a normal load of programs on your machine and then check C:\OS2\SYSTEM\SWAPPER.DAT. Divide its size by 1024 and use that to determine how much space to pre-allocate for your swappath. For example, if your system normally has a 14 MB SWAPPER.DAT, change your swappath line in CONFIG.SYS to like "SWAPPATH=C:\OS2\SYSTEM 2048 14680". If you're running a video driver at a very high color and resolution (65K or 16.6 Million colors) that can severely impact system performance. Try running at 256 colors and see if it works any better. Don't run more than one CPU resource monitor at a time. If you're running a 4 MB system, expect a lot of swapping. More memory will always improve performance. Printing can be CPU intensive. Using the OS/2 spooler and adjusting the spooler priority, you can fine tune the printing overhead so that it has the least negative impact on system performance while keeping the printer(s) busy. A priority setting above 50% may be too aggressive for some slower low-end systems. Keep in mind, the OS/2 spooler requires memory as well (about 512 KB) and will reduce available memory accordingly. If your system has 8 MB of memory and you print infrequently, consider turning off the OS/2 spooler. ═══ 14.2. File System Performance ═══ OS/2 supports two file systems for use on your hard disks: FAT and HPFS. No matter which file system is used, there are some basic considerations. You need to install the file system depending on which operating systems will access the data. If you plan to boot a DOS or Windows system natively, then any data that will be accessed must exist on a FAT disk partition. If you will only be running DOS and Windows applications in a Warp VDM ( Virtual DOS Machine ), then the file system can be HPFS or FAT. Also, when accessing a file on a server, and the server file system is HPFS, you do not need to install HPFS on your local client machine. HPFS only needs to be installed on a computer when a partition on a local hard disk is formatted as HPFS. The amount of memory you have in your machine should affect the decision about which file system to use. When HPFS is installed, it requires a minimum 200 to 250 KB of working set, plus the space allocated for its cache. This is a significant amount of memory and is the main reason why FAT is used when Warp is installed on a system that contains 4 MB of physical memory.. Regardless of which file system you select, you need to plan for future requirements: How will maintenance and fixes be applied? Where will applications be installed? Where will data reside? etc. It is recommended that when you set up your hard disk, you create a minimum of 3 partitions. One will be for the operating system(s), one for your applications and static data files, and another for dynamic data files and temporary files. Decide whether you want to use Boot Manager or Dual Boot. If you select Dual Boot, then OS/2 must be installed with FAT file system. For temporary files, it is better to have them preallocated and reuse them rather than create and destroy them every time. Extending a file can be almost twice as slow as just writing to a file. Also, if you reuse files, it will definitely reduce the fragmentation in your disk directories. ═══ 14.2.1. FAT File System ═══ FAT is best suited for disk partitions that are 80 MB or less in size or that have a limited number of files installed. Usually, 256 files is a good target, with up to 500 acceptable. The number of files become important because FAT files are allocated based on a sector size. The sector size is determined by the size of the disk partition and can be 2K, 4K, 8K or higher. Since most file sizes are not an exact multiple of the sector size, disk space gets wasted. For example, installing DOS, Windows and Warp on a 100 MB partition resulted in 2.2 MB of disk space being wasted. Also, when Warp is allocating space for a file in a FAT partition, it will look for the largest available free space area to write the data or create the file. If lots of files were created and deleted, or expanded, these free space areas become smaller and smaller and are spread out over the disk. This is referred to as fragmentation. When a file is stored in many areas on the disk, it takes longer to read that data simply because the disk head has to do more seeking. The FAT file system disk cache is defined by the DISKCACHE= statement in the CONFIG.SYS file. New in Warp is the "D" designation for the size of the disk cache. Warp will allocate space for the disk cache based on the amount of physical memory that is installed in the system. If more than 8 MB is installed, 10% of the physical memory will be used for the disk cache up to a maximum of 14.4 MB. Based on what applications and support you install in your system, this may be too high and cause you to overcommit your memory. If there is not a lot of disk work done on your system, or you are using DB/2 or HPFS, then you should reduce the size of your disk cache. A number between 128 and 256K is sufficient for most systems. On a 4 MB system, the disk cache is set to 48K. In conjunction with the cache size, you should also set the cache threshold. This determines which records being written or read will be placed in the cache. The default is 1 sector. If your cache size is 128K or larger, increase this value to at least 16 and preferably 32. More detail about the DISKCACHE= statement will be given in the section on CONFIG.SYS. Some additional items for improving performance using FAT are: 1. Group files by usage, the most used files first, and least used files last. 2. Group files based on whether they are static or dynamic. All dynamic and temporary files should be placed in a separate partition. 3. If possible, place all temporary files in a single directory. 4. If possible, permanently create temporary files and reuse them. 5. Only create directories that are really needed. The fewer number of directories you have to search, the faster your search will be. 6. Defragment your partitions after installing new applications, deleting files or applying maintenance and fixes. Any DOS defragmentation program that is aware of hidden files can be used. ═══ 14.2.2. HPFS File System ═══ HPFS does away with some of the concerns that are prevalent with FAT. Files are allocated with more granularity than FAT, and "free space" is allocated in anticipation of file size growth. Therefore fragmentation is greatly reduced and less disk space is used on a per file basis. It is not uncommon to regain about 10 MB out of 100 MB as compared to using FAT. Also, HPFS is especially efficient when handling large partition sizes, > 100 MB, and large numbers of files, > 500. Try to limit the number of individual files in a directory to not exceed 5000. The HPFS file system shipped with the OS/2 product has a cache limit of 2 MB. There is no such limit when using the HPFS386 file system that comes with the LAN Server products. HPFS cache parameters are specified on the IFS statement in the CONFIG.SYS file. As with FAT, you should specify the caching threshold value. Use the /CRECL parameter to do this. Here you specify a number in terms of K bytes. 32 KB is usually a good starting value. As mentioned earlier, a minor drawback to HPFS is the amount of extra memory that it requires to achieve its performance. Even if there is no HPFS partition on your system, it will cost between 128 and 130K of working set memory, as well as the space for the HPFS cache. Overall, it's a small price to pay for a high performance file system. If you are installing Warp on an existing DOS and or Windows system, you do not want to install HPFS. When your system is up and running, you can check the working set of your system. If there is enough free memory and you wish to create a HPFS partition, then you can use selective reinstall to install the HPFS support. Remember that any data stored in the HPFS partition can not be accessed if you boot your machine under DOS. Another advantage of HPFS over FAT is in the area of extended attributes (EAs). EAs are data attached to a file and used to provide information about the file it is attached to. The name of an object that appears in an OS/2 folder or on the OS/2 Desktop is stored in EAs. In HPFS, EAs are part of the HPFS file control block which is read when the file is open. In FAT, EAs are stored in a separate file and require additional I/O to access them, and are therefore slower. Overall, HPFS comes highly recommended. It has matured since conception to bring very safe high performance to your system and successfully replaces the age old FAT design. ═══ 14.2.3. Gospel of Disk Cache ═══ The following "Gospel of Caching According to Max" is provided by Proportional Software based upon a great deal of OS/2 system "tweaking" done by the DCF/2 development team. You can get better performance from your system by using the memory you have available to you in the most efficient and effective way. From the table below, select the case that best describes the file system or systems you use and memory available on your system. CASE 1: You use only HPFS or only FAT but not both ---------------------------------------------------------------- HPFS only FAT only If system memory is at least Set CACHE to Set DISKCACHE to 16 MB 2048 2048 12 MB 1536 1536 8 MB 1024 1024 FAT DISKCACHE parms: LAZY WRITES N/A LW HPFS CACHE parms: LAZY WRITES /LAZY:ON N/A MAXAGE >7,500 N/A DISKIDLE 60,000 N/A BUFFERIDLE 60,000 N/A If your system is HPFS only REM out the DISKCACHE statement in your CONFIG.SYS file. If your system is FAT only, REM out the IFS=HPFS.IFS statement. CASE 2: You use both HPFS and FAT (active and passive) ---------------------------------------------------------------- HPFS active FAT passive If system memory is at least Set CACHE to Set DISKCACHE to 16 MB 2048 512 -1024 12 MB 1536 256 - 512 8 MB 1024 128 - 256 FAT DISKCACHE parms: LAZY WRITES N/A LW HPFS CACHE parms: LAZY WRITES /LAZY:ON N/A MAXAGE >7,500 N/A DISKIDLE 60,000 N/A BUFFERIDLE 60,000 N/A CASE 3: You use both HPFS and FAT (passive and active) ---------------------------------------------------------------- HPFS passive FAT active If system memory is at least Set CACHE to Set DISKCACHE to 16 MB 1024 2048 12 MB 768 1536 8 MB 512 1024 FAT DISKCACHE parms: LAZY WRITES N/A LW HPFS CACHE parms: LAZY WRITES /LAZY:ON N/A MAXAGE >7,500 N/A DISKIDLE 60,000 N/A BUFFERIDLE 60,000 N/A A few more notes: 1. For purposes of the table above, "active" and "passive" are descriptors for the way a partition is used. If it is seldom used, it is "passive." If a lot of disk intensive I/O occurs on the partition, it is "active." 2. The HPFS actually requires 128 to 130K of committed memory as opposed to the widely perceived 512K. As cache size increases to 2 MB, this requirement increases as well, up to a maximum of about 240K. 3. The optimal cache size seems to be 1536. 4. When comparing the relative merits of the HPFS versus FAT, consider the following: On partitions of identical size, the HPFS gives you about 15% more space and performance is about 28% better! 5. Instead of continuing to increase performance, a DISKCACHE value in excess of 2048 seems to degrade it. ═══ 14.3. System Tuning ═══ Before covering OS/2 system tuning let's review the concept of threads and how they are used in OS/2. Every program that you run on an OS/2 system will process as one or more threads. A thread is the basic unit of work within OS/2. Each thread requires a minimum of 4K stack space. Stack space is used to save parameters and addresses when different functions are called from a thread. These functions might be reading from or writing to a disk, using semaphores, and other system and program functions. It is important to ensure that you allocate enough stack space for the thread to run. You can use programs such as EXEHDR.EXE to see and modify the stack space allocated for your program. All programs, DOS, Windows and OS/2 use a minimum of one thread. Each thread executes at a given priority. The priority is used by OS/2 to determine which thread gets to run when more than one thread is ready to run. The highest-priority thread ready to run will be the one dispatched by the system and given time to run. It is given what is referred to as a "time slice". This is a set period of time during which a thread is allowed to run. After this time has expired, the highest-priority thread that is ready to run will be given a time slice in which to run. If the same thread still wanted to run, and it was the highest-priority thread, it would receive another time slice to run in. OS/2 programs usually run at normal priority, which is 200. Under program control, the program can change its priority to be server class, 300, or time-critical, 800. It can also change its subclass priority between 0 and 31. A thread that has priority 200 and a subclass of 15 has a higher effective priority than a thread with priority 200 and subclass 0, and therefore runs first. All DOS and Windows applications always run at priority 200. In OS/2 Warp, IBM has added the capability to define the subclass priority for these applications. Care should be taken when using this subclass priority since it may cause other programs to run slower or generate errors in the case of communication applications that do not get the subclass boost. Warp will give OS/2 threads a priority boost for specific types of functions and states. Following are the priority boosts that are received, in descending order: 1. Disk I/O: When an interrupt is received stating that a disk operation has completed, the thread that processes this state will receive a priority boost for one time slice to process this interrupt. 2. Starved: In the CONFIG.SYS file, there is a statement MAXWAIT=3. The number 3 specifies how long a thread can be in the ready-to-run state without having received time to run. If a thread had been waiting to run for 3 seconds, its priority would be raised to the Starved priority level. 3. Keyboard: This is a boost in priority given to a thread when it is interacting with the system keyboard. Basically, it is for accepting typed in data. 4. Foreground: This is a priority boost given to all threads of the program that owns the active window on the OS/2 screen, the one that is highlighted. 5. Windowed: Threads which have windows showing on the display will also receive a priority boost when drawing or writing into that window. When a thread is in more than one of these states, the system will combine the states and give a priority based on the combined states. For DOS and Windows applications, these priority states do not apply. Instead, a second thread is used to handle the interrupt, and that thread is given an interrupt boost.. Idle class is the other priority class that exists in OS/2. This priority level runs only when nothing else in the system wants to run. Threads in this class will not receive any of the state boosts. If DOS and/or Windows applications are being run, then you should avoid the use of threads that run in idle class because they will never run but will take up system space. ═══ 14.3.1. CONFIG.SYS Settings ═══ These are specific things in the CONFIG.SYS file that you can change to affect the performance of your system. First, we cover those statements that you should NOT modify unless you have a system which has a special use, such as a process control system. An example would be a system used to monitor a manufacturing machine or chemical process, where timing and response time are critical factors. 1. PRIORITY_DISK_IO=YES This allows the application that has screen focus to receive a priority boost when it's disk operation is complete. This applies to the first time slice given to the thread after the disk operation is complete. After the time slice, the state is reset for the thread and the priority boost removed. 2. MEMMAN=SWAP,PROTECT Allows OS/2 to swap code and data to disk when more memory is needed than is physically available in your computer. If you do not specify SWAP, you will need enough physical memory in you computer to hold all the code and data that OS/2 and your application needs to run. You do not pay a penalty by specifying SWAP and then not needing to use it. The PROTECT parameter allows Dynamic Link Libraries (DLL) to allocate protected memory. Protected memory is memory that is protected from being accessed by unauthorized programs. You can also specify a COMMIT parameter. This forces the system to ensure that enough physical memory or swap file disk space is available for a memory object when it is created. Normally, OS/2 commits physical and disk memory when the page of memory is actually touched. Specifying this parameter can significantly increase the amount space your swap file uses on disk. 3. TIMESLICE=X,Y This statement is not found in the CONFIG.SYS file after you install OS/2 but is sometimes recommended to be added. This was okay to add for OS/2 2.0, 2.1 or 2.11 systems, but not for OS/2 Warp. In Warp, it dynamically modify a thread's time slice based on actions that have occurred. For instance, if a thread took a page fault during it's time slice, an extra time slice is granted to process what is contained in the faulted page. An applications doing disk I/O is given an extra time slices if the data they are reading is in the disk cache. When the TIMESLICE parameter is used, none of these actions will occur. Instead, each thread will be given the minimum time slice of X, and its time slice will not be allowed to go beyond value Y. 4. PRIORITY=DYNAMIC If DYNAMIC is not specified, then each thread will receive a minimum and maximum time slice of 32 milliseconds with no additional time slices as described in the TIMESLICE= statement description above. 5. DEVICE=C:\OS2\BOOT\VDISK.SYS This statement allocates a virtual disk in your computers physical memory. It is used for quick access to often-used files and programs. This was good for a DOS environment where the extra memory in your computer was not used by DOS, but OS/2 uses this memory, and your performance can be adversely affected if a VDISK is used. It is much better to increase the size of the disk cache if you have unused physical memory than it is to use VDISK. Now let us look at statements in CONFIG.SYS which you should change to help improve the performance of your Warp system. 1. LIBPATH= This tells the system where to find DLL files and disk device drivers that Warp and applications use. Place the directory names in order of usage. The most accessed directory should be first, the least used last. If possible, place the DLL used by a program in the same directory as the working directory when the program is running. Then, you do not need to add that directory to the LIBPATH statement. Also, place all directories that are on a network at the end of your LIBPATH statement in case the network goes down and they cannot be accessed. See the discussion of dynamic LIBPATH support later on in this paper for additional considerations when accessing network drives. 2. PATH= is used to specify where Warp searches for program executable files, EXE, COM, CMD, BAT, etc. Place the directories in order of most used first, least used last. If programs will be executed from an object on your desktop or folder, specify the path there and not in the PATH statement. Only place directories in the PATH statement for executables that will be called from other programs or commands. 3. DPATH= The same principle applies to DPATH as PATH and LIBPATH. For resources that applications use, place the most used directories first and the least used last. 4. BUFFERS=90 Buffers are physical memory used to support partial sector reads and writes in a FAT file system environment. They are also used to cache FAT directory entries and for swap file disk I/O. Because BUFFERS are used to cache FAT directory entries, this number should not be reduced below 60, unless you are not using the FAT file system on your disks. Reducing this number will increase the number of disk reads that are done to the FAT directory entries and therefore slow down your system. 5. MAXWAIT=3 This specifies the maximum amount of time that a thread will be in a ready-to-run state without receiving a time slice to run in. After this time expires, the thread will be given a boost in priority so it gets a chance to run. Reducing this value to 2 may help in systems where there are a lot of programs running, or multiple separate DOS/Windows programs running. Reducing it to 1 on systems where there is swap activity taking place can slow down the system. 6. DISKCACHE=D,LW,T,AC This is used to specify the amount of physical memory set aside to cache data that is being read from or written to disk. D represents a dynamic disk cache value that varies in size from 48K to 14400K, based on the amount of physical memory you have in your system. If you have more than 8 MB in your system, D will be 10% of your system's physical memory. The D should be changed to the actual amount of disk cache space you require. If you have a system where your programs do not do much disk I/O or where your memory is being used up by your applications, you may want to set this value to 128. Also, reduce this value if you are using the DB/2 product or any other product that provides its own disk data caching. The T parameter is not defined in the default CONFIG.SYS file. It defines the cache threshold for records that go into the cache. The default value is 4. This means that any record that is 4 sectors or less will go into the cache, while those greater will not. If your disk cache size is 128K or larger, add this parameter to the disk cache statement. If known, set this value to the largest record size used. Otherwise, set the value to 32. The LW parameter activates the Lazy Write or write behind feature. This allows the application to get control back before the data is actually written to disk. A separate thread will write the data from the cache to the disk when necessary or opportune to do so. You should always use this option, and code any applications to open files with cache bypass option if disk data security is imperative. 7. SWAPPATH=D,R,S SWAPPATH specifies where code and data pages are swapped to on disk when more physical memory is needed than is available in your system. D represents the path where your SWAPPER.DAT file is located. For systems which have multiple partitions or multiple disks, this should be placed on the least used directory of the least used disk. Also, try to physically locate the swap file on the disk based on its usage. If you are doing a lot of swap activity, place the swap file at the start of the disk. If is it rarely used, place it at the end. S is the size that the swap file is initialized to when you start your Warp system. Make this large enough so that it does not have to grow in size while you are running your programs. You should perform your normal computer functions and look at the size of the swap file when you have the most activity. Then set the value of the S to this size in the CONFIG.SYS file. If you are using the FAT file system, IPL your system under DOS, delete the SWAPPER.DAT file, defragment the disk partition where the swap file will be located, and then IPL your OS/2 system. This should keep your swap file from getting fragmented. R specifies the amount of free space that must be in the swap file. The default for this value is adequate and only needs to be changed if you want to be warned earlier about a possible out-of-memory situation. 8. THREADS= THREADS defines how many threads the system will be able to use. One page of resident memory is need for approximately every 32 threads that are defined. As a minimum, you will need 80 threads to support the base Warp system and 3 or 4 OS/2, DOS and or Windows applications. The system will support up to 64000 threads, but typically you will not have enough memory in your system to support more than 300 to 500 threads. 18 threads are required for LAN Server 4.0. To calculate the number of threads that you will need in your system, use the formula 54+(2xN)+10 where N is the number of programs that you will run together. If the program requires more than 2 threads, add in the additional threads. Additional CONFIG.SYS Considerations: 1. You should only install the devices drivers that your programs actually need to run. 2. Do not install extra communication, printer, video or device drivers if they will not be used. Below are a list of device drivers and virtual device drivers that are normally found in CONFIG.SYS and that may not be needed. (Virtual device drivers are used to support DOS and Windows applications and usually have a V at the beginning of their name.) a. VEMM.SYS Used to support Expanded Memory use in DOS and Windows programs. b. VXMS.SYS Supports Extended Memory in DOS and Windows applications. c. VDPMI.SYS Supports the DPMI memory access and is required to support all Windows applications. d. VW32S.SYS Supplies support for the WIN32S Windows APIs. Not needed for Windows programs that do not use WIN32S APIs. e. IBMxFLPY.ADD x will be either a 1 or a 2. 1 is used for family 1 machines and 2 is for MCA machines. You do not need both. f. XDFLOPPY.FLT This is required for reading diskettes which are written using the XDF (Extended Disk Format) format. These are usually OS/2 and PCDOS 7 installation diskettes, printer and video driver diskettes. The Warp Install and Disk 1 diskettes do not use the XDF format. g. COM.SYS and VCOM.SYS are only required if you will be doing serial or async communications. If you use the selectable CONFIG.SYS option in the Archive and Retrieve feature of Warp, it is possible to create multiple CONFIG.SYS files which will contain different device drivers based on your needs. For example, you could create one CONFIG.SYS file that is used for maintenance and installation. This one would include the XDFLOPPY.FLT and both IBMxFLPY.ADD drivers plus additional threads. Another CONFIG.SYS used for normal processing could have these device drivers removed and a lower number of threads. When maintenance has to be applied to the system, or some additional new products installed, you could IPL the machine with the Archive and Retrieval menu active and select the proper CONFIG.SYS to be used. An extension of this would be to archive the CONFIG.SYS and the OS/2 INI files and select those to apply maintenance. Note: DO NOT assume that the Archive and Retrieve feature of Warp acts as a means to backup the desktop. In the event of a complete disk failure, only backup images stored off line can be depended upon. ═══ 14.3.2. Desktop Settings ═══ Let's look at some of the System Settings and Desktop settings that can be tuned to improve a system's performance. In the System Setup Folder there are many utilities that are available. Add "SET RESTARTOBJECTS=STARTUPFOLDERSONLY" in your CONFIG.SYS to keep OS/2 from restarting at bootup all previous open application. Spooler: The drop-down menu provides an option to disable the spooler. This can be done without problems when only one job will be active on your printer at a time. This will save a little bit of memory and one process and thread in your system. If you have a dedicated print spool machine, then you should raise the priority of the spooler to it's highest point. For non-dedicated print spool systems, the priority should remain at the default. You would only increase this if (for example) you raised the subpriority of a DOS session and wanted to print documents while running the DOS session. In this case, you would want to make the priority of the print spooler the same as the DOS session. Schemes and Color Palette: You should use solid colors and avoid the use of bitmaps for desktop and folder backgrounds when conversing memory. These particular options use more memory and require more processing time to display them. Sounds: Deselect the System Sounds options, unless you like the noises when opening and closing your folders. It costs between 250 and 300K in working set just to hear the noise. An additional 40K or so of working set can be saved by executing DINSTSND.CMD in an OS/2 command session. This will unhook the system sounds from the OS/2 desktop. To get them back, you would execute INSTSND.CMD. Font Palette: Only install the fonts that you will actually use in your system. Also, try not to mix fonts in folders or on the OS/2 Desktop. If you do, you will be using extra memory. Outline fonts tend to be a little smaller in terms of memory than bitmap fonts and once they are in the cache, they perform just as fast. WIN-OS/2: When defining a Windows program, select common sessions and make DDE and Clipboard support both private. If floating-point is used in your Windows applications, use the enhanced run mode for Windows. Also, if you have a Windows application that you always run, it is better to start it via the Startup Folder than to use the Fast Load option and start it from the Desktop. Finally, ensure that when you migrate, install or add Windows programs to you system, that the run mode for these is the same as the common session run mode. If run modes are different, then you will have two separate Windows sessions running even though you stated that a common session is to be used. System Setup: Disabling the Animation and Print Screen option can save a little in code path and memory. Setting the System Logo option to none can save some time when loading applications that check this parameter to see how long to display their applications logo. The type-ahead option will use a little more memory. When selecting screen resolutions, remember that the higher the resolution, the more memory that is used. Very high resolution and color support can require 100 to 200K of physical memory. Mouse: Mouse pointers are basically bitmaps. The amount of memory used will be affected by which mouse pointer style you choose. If you activate the comet cursor, this will cost additional memory and processing time whenever the mouse is being used. Desktop Settings: Desktop settings are selected by choosing the Settings option on the Desktop menu. Choosing Automatic Lockup will cause extra code path and processing time to occur. Normally this is very minimal, until the time-out value expires. Then you are looking at about 40 to 50K of working set. If you select Create Archive on system restarts, this will slow down your systems IPL time. You want to set this option only when you have changed your desktop and/or configuration and want to save it. Once it has been saved, turn this option off. You can get to the Archive Retrieve menu screen when you IPL your machine by using the ALT+F1 key sequence. Conclusion: 1. All the bells and whistles, neat features, applications and devices come at a cost. They all cost disk space, they all use memory, and they all have the potential for slowing your system down. 2. To minimize this, plan ahead. Decide what the system will be used for and what your future uses will be. Then, set up the system accordingly. 3. Install only the things that you are actually going to use and need. Ensure that there is a match between the software you install and the hardware you install it on. 4. If an application or feature cost more memory than you have, either don't install the feature, or get more memory for your system. 5. Be creative and logical. You can set the system up with different configurations and different support, defined to optimize performance based on the particular functions you perform and applications you use. 6. Finally, become aware of what Warp has to offer and use it to your advantage. ═══ 15. Glossary ═══ 1. Virtual Memory refers to the concept that available disk space is used to hold inactive memory while demanding active memory can be serviced. This is managed in cooperation by both the operating system (OS/2) and the CPU. OS/2 deploys and takes advantage of a true Virtual Memory model by using the OS/2 Swap file for temporarily holding over-committed and inactive memory. 2. Swapping is a normal activity for any computer. A machine with little memory (ie. 8 MB) may experience heavy "swapping". This occurs when the operating system spends (more) time swapping than allowing actual work to be done by the user. Install more memory. Following the Least Recently Used (LRU) algorithm, OS/2 memory management will identify individual 4 KB memory pages as being "swappable". When not enough REAL memory is present for more demanding memory pages, OS/2 swaps-out the least used. 3. Real Memory refers to the amount of physical memory installed in the computer and is used in comparison to Virtual Memory. 4. Free Memory refers to the amount of actual free REAL memory available to OS/2 and OS/2 programs. This will never be shown as a number higher than the amount of physical memory installed in the computer. 5. Resident Memory refers to the amount of REAL memory which is not swappable nor discardable usually belonging to the operating system (OS/2) or applications which created the memory as non-swappable. For performance reasons, the operating system will maintain critical and highly active memory as Resident memory. 6. Swappable Memory refers to the amount of REAL memory which is identified as noncritical or Least Recently Used (LRU algorithm) memory pages capable of being swapped-out to the OS/2 swapper file until the memory is in demand. The term is synonymous with "discardable" memory. 7. Print Spooler is a facility which facilitates directing print output to a particular print queue without having to wait for the printer to receive and print the output. 8. Print Queues are an intermediate holding place for print jobs. Related to the Print Spooler, there is a 1-to-1 relationship between a Print Queue and a physical printer. When a print job gets spooled into a particular print queue, the print job can be automatically printed, place on hold, or subsequently released for printing. 9. Process refers to 1 instance of an executing program. Every Process is assigned a unique ID (hence Process ID or PID) by the operating system (OS/2). Every Process ID has at least 1 Thread. A process can launch another process. This makes the launching process the parent and the launched process the child. Hence Parent Process ID or PPID. 10. Threads are functions created by a Process and execute asynchronous to the Process. A Process has by default 1 thread, but can create many. Threads of a process have a finite life and terminate when the main process ends. Every Thread is assigned a unique ID (hence Thread ID or TID) by the operating system (OS/2). Each thread will have a "state" which identifies whether the thread is active or waiting for a time slice to be granted by OS/2. 11. Sessions are unique instances of a process which have a "screen group". A Process with a Screen Group has a virtual keyboard, screen, and mouse. Unlike "Detached" (Daemon) processes which execute completely in the background, have no form of user input or output and are not always visible to the user. When a process within a Session launches another process asynchronously, the child process is assigned a unique Session ID or SID. Launched synchronously, the child process inherits the same Session ID as the parent. 12. Process Monitor allows the user to view the many attributes associated with 1 or more Processes and their respective Threads. OS/2 maintains a "Process Table" to keep track of all the processes and threads executing. PM Patrol provides a very robust Process Monitor facility. Every possible process and thread attribute can be monitored. 13. Time Slice refers to the operating system (OS/2) granting a process thread a certain amount of CPU execution time in a multitasking environment. This capability allows the user to work simultaneously on many tasks. A Process can set his priority level so that OS/2 will grant more time, more often. This granting of time slices is known as the "Scheduler" in an operating system. 14. The OS/2 Scheduler is a very robust algorithm and integral operating system component capable of servicing time critical applications in the most demanding real-time environments. This, combined with stability, connectivity, and maturity is why OS/2 is useful for mission critical systems. 15. Preemptive Multitasking in OS/2 provides the ability to "preemptively" interrupt one process without it's knowledge or control to allow another process a time slice. DOS+Windows and Windows-95 attempt to preemptively multitask, but suffer from architectural flaws which render them more "cooperative" multitasking operating systems. True preemptive multitasking operating systems such as OS/2, Windows NT, and UNIX, lend themselves to mission critical and time sensitive applications. Multimedia is a good example of a time sensitive application. ═══ 16. Trouble Shooting ═══ This section discusses topics of potential difficulty, compatibility, and idiosyncrasies of PM Patrol features. Everyone should read this section. The Float to Top option does not work when the E.EXE editor is active or causes a 3175 error. Due to a bug in the E.EXE editor under OS/2 version 2.1 and 2.11, PM Patrol temporarily disables the "Float to Top" option while E.EXE is the active window. This bug in E.EXE is fixed in OS/2 Warp 3.0. If this problem surfaces: 1. Change the "Process Monitors" in PM Patrol's "Refresh Settings" to a lower value such as 3 or 4 seconds. 2. Or, turn off the "Float to Top" in the PM Patrol "Options" dialog. A running program's priority is different than that specified in the Program Launcher or Scheduler. Note: Once launched, a program can change it's own priority Class and Range settings. This means that PM Patrol sets the program's "default" priorities with those that you select, but does not control it after the program has been launched. A good example of this is running Windows programs. The Win-OS/2 environment will typically change the priority to "Regular" for both Class and Range. Therefore, Windows programs can NOT be controlled by PM Patrol for priority control. Free Memory ALWAYS reports 0 KB or maximum KB available: 1. OS/2 views memory as a flat linear address space and deploys a true Virtual Memory Model. Because of this, calculation of Free Memory is subject to the following constraint. Note: If your system hardware consists of MORE than 16 MB of memory and the hard disk controller is a 16-bit adapter, Free Memory calculation may not be accurately reported. Use a 32-bit disk controller when more than 16 MB RAM is installed. When printing, the output is garbled or incorrect: The PM Patrol Port Monitor is active by default and monitors the print stream. There may be cases when printing with the OS/2 Spooler disabled where you might experience these symptoms. To remedy this, run PM Patrol without the Port Monitor active by specifying the command-line parameter "-P" when starting PM Patrol. If the problem persists, it's not being caused by PM Patrol. Check your print driver. Using another CPU monitor program causes questionable CPU results to be reported by PM Patrol: The PM Patrol CPU monitor is designed to co-exist with other CPU monitors. However, there may be an occasion where you might experience a problem. This is nothing against PM Patrol or other CPU monitors, it's just the nature of the monitor and how a CPU monitor works. They are not designed to "compete" with each other. PM Patrol is "aware" of other CPU monitors when they are active such as (Pulse, SPM/2, and several others). The first recommendation would be not to run more than 1 CPU monitor at a time, but please report the problem to WallyWare. Not all Monitor display items can fit on the PM Patrol Status Line: 1. PM Patrol does not expect anyone user to desire ALL PM Patrol monitors on the Status Line at once and therefore does not attempt to claim they all fit. However, there are a number of things that can help. 2. Enable the "Display Compact" option under "Status Line Options" of PM Patrol. When enabled, all Status Line abbreviations such as "Ram", "Swp", "Net", and others are removed. This option was specifically designed to address this issue. 3. Depending on the font you have selected, this may be true. Try using a smaller font - perhaps a VIO style font. The 2.VIO font is the smallest font for a VGA system. 4. Using the "Show Decimal" option for Status Line monitors, turn this option off allowing PM Patrol to round values and will free-up some Status Line space. 5. Another option is to turn off the "Graphical" display of free memory or CPU usage. This will then display the numeric values only. 6. If there are a lot of drives on-line, turn off the "Drives On-line" monitor of PM Patrol. PM Patrol displays Drive B when no physical Drive B exists: OS/2 supports two "logical" floppy drives. A and B, even if drive B is nonexistent. In fact, if you were to type "Dir B", OS/2 will prompt you to insert a diskette into drive B. This demonstrates 1 physical but 2 logical drives. Your system seems to constantly show excess CPU usage via the PM Patrol CPU monitor: 1. It's not unusual with today's diverse software, multimedia, and the ability to run DOS/Windows under OS/2, to see constant CPU usage. Use the PM Patrol Process Monitor window to identify culprits of CPU activity. 2. Check to make sure the PM Patrol refresh rates found in "Refresh Settings" are not set at their absolute most minimum values. These minimum values can be too aggressive on 386-33 MHz systems (or less). 3. Make sure your not running another CPU monitor in addition to PM Patrol. If you must, turn off the "CPU Monitor" in the PM Patrol "Options" dialog. With all PM Patrol Monitor windows (Process Monitor, Memory Monitor, and Network Monitor) active and automatically refreshing, may be too much overhead for some slower 386 class computers. Therefore, you may need to use these windows selectively and not continuously. Due to the nature and dynamics of OS/2's method of virtual memory swapping, PM Patrol's calculation of free swap space is an approximation and may not result in an exact calculation all the time. As compared to all PM Patrol's resource monitors, swap utilization is the only one that may yield approximation. For systems that are memory rich and therefore swap little, monitoring swap utilization may not be necessary. ═══ 17. Caveats ═══ PM Patrol is designed with special attention to performance and causes no system degradations when properly used. The PM Patrol defaults and minimum allowable settings for "Refresh Settings" protects you from system-wide degradation. However, setting the refresh rates at their minimum values may be too aggressive for some low-end computers. The overhead for PM Patrol is no more than 1-2 percent CPU load (average over 1 minute) and only during resource sampling. Note: The CPU effort to collect Process Meter data, although minimal when active, can be negatively influenced by adjusting the "Process Monitors" frequency in PM Patrol's "Refresh Settings" dialog too low - depending on the computer. As a rule of thumb, set the "Process Monitors" frequency to the following, but never lower: 1. 5 seconds for i386 class computers 2. 4 seconds for i486 class computers 3. 3 seconds for Pentium class computers The Process Monitor, Memory Monitor, and Network Monitor windows create minor delays in the form of brief CPU spikes. These spikes are normal and can be further controlled in the PM Patrol "Refresh Settings". Note: With all PM Patrol Monitor windows (Process Monitor, Memory Monitor, and Network Monitor) active and automatically refreshing, may be too much overhead for some slower 386 class computers. Therefore, you may need to use these windows selectively and not continuously. As with all our products, we are committed to supporting and enhancing PM Patrol. Due to the nature of some of the PM Patrol features (i.e. Process Monitor and Process Meter) and it's unique application, compatibility with future versions of OS/2 can not be 100% guaranteed. ═══ 18. What's New and Version History ═══ This section outlines a historical record of new features and enhancements applied to the PM Patrol product. We're on the Web. You can ALWAYS get the latest version of PM Patrol from our WallyWare Internet Web site at http://homepage.interaccess.com/~wally and send Internet e-mail to wally@interaccess.com. These items are new in PM Patrol version 4.2d: 1. Added support for the In-Joy Internet access dialer to PM Patrol's INet Connect Time monitor. The In-Joy software can be obtained from the authors website at http://www.belle.dk/~bj/dialer.html. Version 0.07 or higher is necessary. These items are new in PM Patrol version 4.2c: 1. Fixed problem with monitoring remote spooler queues for LAN Server 4.0 and Warp Server environments. 2. For PM Patrol's Swap Growth event monitor, the default threshold limit for swap growth is now set to the initial size of the OS/2 swap file (per the Config.Sys "swappath=" directive), plus 2 megabytes. Each time PM Patrol is started, it will check for the condition where the setting for the threshold limit is less than initial swap file size and make the necesssary adjustment to this setting as described above. 3. Added new Command-line utility to assist in PM Patrol installations. The "PMPReg" utility is provided with PM Patrol to allow command-line registration of the product and is useful under situations which require setup or configuration of PM Patrol for pre-loads, batch, and/or remote setup. These items are new in PM Patrol version 4.2b: 1. A compatability problem with PM Patrol's CPU monitor and Lotus SmartCenter has been fixed. The Status Line overall CPU load and the Process Monitor now report correct CPU load with SmartCenter co-existance. This fix is necessary for Merlin compatability. A special thanks to Jon for assisting with this problem resolution. 2. Added Reflect Reserved in VRam. This option provides the ability to have the Free Virtual Memory calculation reflect (or not reflect) the reserved disk space as specified in the "swappath" directive of your OS/2 Config.Sys. This new option is located under PM Patrol's General Settings. 3. Added Reflect Free RAM in VRam. This option provides the ability to have the Free Virtual Memory calculation reflect (or not reflect) free Real memory in the calculation of Free/Used Virtual memory. Ones definition of Virtual Memory may or may not include Real Memory into the calculation. This option provides you the ability to select your choice of definition. 4. Added new startup command-line parameter. Use the "-N" Parameter to disable network traffic I/O monitoring for the workstation. 5. A minior bug with the PM Patrol Scheduler has also been fixed. PM Patrol's Scheduler requires that the Process Meter be active and is now automatically activated when 1 or more Scheduler task(s) exist. These items are new in PM Patrol version 4.2a: 1. The Inverted option introduced in version 4.1 has been enhanced to allow individual selection of which monitors to invert. This one's for you Noah. 2. Fixed non-critical problem in Spooler Monitor where a large number of print queues could cause PM Patrol to exhaust its buffers. 3. The Spooler Purge, Release, and Hold operations in PM Patrol now support up to 20 print queues. 4. The Program Scheduler and Program Launcher lists are now sorted for easier viewing - finally. These items are new in PM Patrol version 4.2: 1. The Event Monitor will now allow monitoring for drive free space when the particular drive hasn't been selected for display on the Status Line. This allows you to be notified via the Event Monitor of low disk space w/o seeing the drive on the Status Line (aka. Background monitoring). When and if a drive under Event Monitoring goes offline, no notification will be given regarding free space. Notification is, however, provided on the PM Patrol Status Line for a given drive which has been selected for Status Line display. 2. Performance Improvements were made to the Data Collection engine which services the Process Meter and Scheduler facilities in PM Patrol. 3. The parsing of the Security Password in PM Patrol now strips off leading spaces for those who have gotton themselves accidently locked-out. 4. The Scheduler built into PM Patrol now provides better termination settings. Hours and minutes may now be specified for the termination of a scheduled program. 5. The Scheduler built into PM Patrol now supports the ability to terminate a process after a specified duration of time (minutes). See online help section of the Scheduler for details. 6. The Scheduler will now log via the PM Patrol DBug facility all programs started, shutdown, or terminated (killed). This assumes DBug has been started as well. With this enhancement, the DBug facility can now be used for logging Scheduled programs. 7. Fixed problem in Scheduler where, based on the scheduled date/time settings, a scheduled job could launch more than 1 instance. A pop-up message and a DBug are now generated, warning that an instance of the process is already active. 8. Any program started from the PM Patrol Program Launcher will now also get logged via the DBug facility. This assumes DBug has been started as well. 9. Fixed a bug in the PM Patrol parser. Config.sys statements containing leading spaces were not being properly parsed. 10. Removed the Scheme Palette option from PM Patrol's menu options until the problem associated with this item is resolved. The problem: When selected from PM Patrol's menu, the default Scheme Palette would get invoked. Customized Schemes would sometimes appear lost. 11. Enhanced the Installation program addressing fail-safe and file copy issues. 12. The Auto-Save Profile option introduced in version 4.1 also introduced a problem where this option would remain enabled - regardless of the user's selection. The ramification effects power-managed computers so that disk drives never power-down automatically. 13. Added the ability to specify the number of minutes before an Auto-Save Profile is performed. The default is 15 minutes, but can range from 1 minute to 8 hours. This option is located in the General Settings window. 14. The Show Inverted option introduced has been enhanced to include Virtual Memory as well. This option allows you to "invert" or reverse how the Virtual Memory and graph is shown on the Status Line to reflect resource taxation similar to PM Patrol's CPU monitor. 15. Added Show Open Files option for the Process Summary monitor on the PM Patrol Status Line. Some like to see it, and some don't. So, here's the option. 16. The Show Percent option on PM Patrol's Status Line has been removed and replaced with individual "Percent" options for each of the monitor items including Swap, Resident RAM, Real RAM, and Virtual RAM. These individual "Percent" options are located on PM Patrol's Options window and now provides more flexability in customizing display options. 17. The Internet Connect-Time is now refered to as INet Connect-Time. Prior to 4.2, the "Accumulative Internet" option was accessed via the General Settings window. It has been relocated to PM Patrol's Options window and is called Show Total INet which will show total Internet Connect-Time in addition to the per instance connect-time. With this option, you can now see total Internet Connect-Time at the same time as the per-instance connect-time. 18. The INet Connect-Time bug fixed in version 4.0 was resetting to zero for per-instance connections prematurely while not allowing the user to see the total time after disconnection. This has been fixed. This connect-time is now reset to zero when a new connection is established. Thus, allowing the user to see what the last Internet Connect-Time was before re-connection. 19. Added Show Inverted option. By default, PM Patrol shows Swap and Real RAM in terms of "Free" or available resource on the Status Line. This option allows you to "invert" or reverse how these monitors and graphs are shown on the Status Line to reflect resource taxation similar to PM Patrol's CPU monitor. 20. The Show Percent option now effects both Swap and Real RAM monitors on the Status Line. When selected, both Swap and Real RAM will show the percentages. Prior to 4.2, only Swap was effected. 21. Bug fix in Virtual Memory calculation. 22. Added Reflect Free Swap in VRam. This option provides the ability to have the Free Virtual Memory calculation reflect (or not reflect) free OS/2 swap space from the swap file (swapper.dat). When enabled, the Free Virtual RAM (VRam) calculation will reflect a more accurate and actual reading. This new option is located in PM Patrol's General Settings dialog. These items are new in PM Patrol version 4.1: 1. New PM Patrol ShutDown command-line utility (PMPSDOWN.EXE) which provides a mechanism to shutdown PM Patrol after a specified amount of time (seconds). 2. New Message Box Popup command-line utility (MSGBOX.EXE) which can be invoked from the Scheduler to popup a message at a specific time. Lots of options for this. Refer to the "Command Line Utilities" help section for details. 3. PM Patrol can now be accessed without the use of a mouse. Using Ctrl-Esc to get the OS/2 Window List, then selecting the "PM Patrol Status Line". At this point, pressing F12 will get you to the PM Patrol Options window. F11 will invoke PM Patrol's Utility Popup. 4. PM Patrol now looks for the COMSPEC environment variable to identify the correct OS/2 Command Shell Interpreter. Typically this will point to CMD.EXE. But for those 4OS2 and MKS Toolkit Korn Shell users, this has been fixed. 5. New Auto-Save Profile option will automatically save the PM Patrol profile and statistics every 15 minutes. This facilitates integrity for PM Patrol's statistics in the event of a system hang or crash. With this option turned on, power-managed computers will not automatically power down the disk drive because of the consistent 15 minute disk writes. These disk writes are not buffered and therefore commit to disk immediately. 6. New Lock Status Line Position option locks-in the PM Patrol Status Line position from accidently dragging and moving. 7. New Message Popup Seconds option allows you to define how long (seconds) PM Patrol should display popup messages. The default is 4 seconds. 8. Fixed bug in Program Scheduler and Launcher when using the keyboard would automatically launch the first entry in the Program or Scheduler list. 9. Fixed bug in calculation of available virtual memory. 10. Fixed bug in Accumulative Internet Connection Time. When Accumulative is disabled, the Connect Time will now reset to 0 after disconnecting from the Internet, each time PM Patrol is started, or when you manually reset it in PM Patrol. 11. The Process Summary now displays the total active/open number of files on the system. This is in addition to the number of total processes and total threads. 12. Fixed bugs in DCFUserDefined API and Refresh Settings for User Defined frequency. 13. Fixed bug in Process Meter where the Run-Time Duration day was not being incremented. 14. Added ability to turn off Event Renotification by specifying zero seconds. 15. Bug fix for situations where the month of January was being abbreviated as "an" instead of "Jan". 16. Revised the online help section " Order and Pricing" and the text-based file ORDER.FRM to reflect new methods of ordering PM Patrol. These methods include Credit Card, CompuServe SWREG, personal check, and money orders. 17. Revised online help to reflect improved PM Patrol support and obtaining updates by itemizing FTP and other download sites posted to directly by WallyWare. Refer to online help section "Support" for details. These items are new in PM Patrol version 4.0: 1. Due to changes in PM Patrol's profile data (PMPATROL.INI) to accommodate the new release, this profile data may be re-initialized to standard defaults when the new release is first invoked. 2. Significant improvement in overall visuals and interpretation of system resources. This includes emphasis on new graphing functions within the PM Patrol Status Line and across several new PM Patrol windows. 3. Distinctly different monitor windows which focus on categories of resources. These include: a. Network Monitor window. Provides concentration for LAN Server/Client I/O traffic workstation specifics. b. Process Monitor window. Provides concentration for OS/2 active processes, threads, CPU per process, DLLs loaded, and much more. c. Memory Monitor window. Provides concentration for OS/2 memory utilization for free/used real memory, swappable, free swap, resident, and other memory related items. d. Drives Monitor window. Provides concentration for disk drives on-line, utilization per drive, location/file systems, summary per drive, and drive maps. e. Port Monitor window. Provides concentration for I/O traffic and performance of LPT ports with the ability to monitor 1 or more ports at the packet level. Using the new Debug facility, individual packets can be monitored providing "data scope" capability. When DBugging is enabled for a selected LPT port, an artificial delay (1 second) is inserted between each packet sent to the port. 4. New Process Meter features provides unattended operation and automatic collection of process statistics for determining total and average run-time, CPU consumption, and run-count instance over a user controlled range of time. 5. New Activity Monitor graphs highly visible/critical OS/2 resources. This facility provides a "bird's eye view" of overall system utilization. Drag and drop the window for precise window positioning. 6. New CPU Magnification feature enables CPU monitoring at a selectable granule level. Zoom into CPU effort for fast CPUs such as highend i486 and Pentium systems. Up to 50 times (50x) magnification. 7. Improved Fast Find facility allows execution of programs, viewing of INF files, double click selection, and more. 8. New Fast Help facility which provides very fast access to a list of available on-line help for OS/2 and Windows help files. Coupled with search capability, this feature enables you quick access to highly accessed help books. 9. New Status Line monitor items include: a. OS/2 free Swap Utilization b. HPFS386 Cache read and write statistics c. Internet Connect Time when using a modem and the PPP or SLIP protocols of the IBM Internet Access Kit. Provides the ability to monitor and manually reset connect-time and accumulative monitoring. 10. New Debug Facility. The high-performance real-time debugging facility that goes where the interactive debugger can not. PM Patrol's new Port Monitor takes advantage of this facility allowing you "data scope" capabilities on a per packet basis. 11. Improved on-line help including in-depth discussion of performance tuning specifics for the OS/2 environment. 12. PM Patrol's Data Collection Facility (DCF) APIs have been enhanced to reflect all new monitor items introduced with this release. Due to changes in the DCF data structures (since version 3.0), previously written programs which use PM Patrol's C/C++ APIs will require recompile to reflect the new data structures. 13. New Event Monitor notifies you when critical system activities occur or thresholds are exceeded. These include CPU, Swap growth, batter low, virtual memory, low disk space, and more. 14. Miscellaneous new features provide: a. Restart Desktop allows the ability to restart the OS/2 desktop and optionally select different OS/2 INI locations. b. Idle System CPU monitoring within PM Patrol's Process Monitor window. When applications consume CPU, "Idle System" will decrease. When your system sits idle, "Idle System" increases. c. Sound Bites For MMPM/2 enabled systems, PM Patrol is multimedia enabled providing notifications of events, window selections, and more. d. Filter-out Background processes in the Process Monitor window to allow you to focus only on "Foreground" programs active on your system. e. New Auto-Popup Menu option for quick access to the PM Patrol Utility popup menu on the Status Line. f. New Confirmations option to suppress PM Patrol from prompting you before taking selected actions. g. WorkPlace Classes option provides the ability to browse through registered WorkPlace Shell classes with the capability of registering new classes or deregistering classes no longer needed. h. Close All Folders option quickly closes all open OS/2 WorkPlace Shell folders. This is similar to PM Patrol's ability to also quickly Minimize or Maximize all open desktop windows. Show Decimals option enables or disables PM Patrol displaying the decimal position for several of the Status Line monitors. When disabled, PM Patrol will apply standard rounding across effected values. i. Forced OS/2 Shutdown for safe and dependable system shutdown when the normal OS/2 shutdown services are unresponsive. j. Windows 3.1 Enhanced-execution support for both the Scheduler and Program Launcher. k. Recalibrate PM Patrol's CPU monitors when switching between Turbo/Slow mode for certain systems. l. Quick open/close of all PM Patrol monitor windows. m. Self-awareness of other CPU monitors making PM Patrol even more stable and it's ability to coexist in diverse environments. n. Re-organization of menus and overall consistency making PM Patrol easier to use and access to its features. o. New command line utility called FDUMP which provides the ability to dump the contents of any file and display the contents in both ASCII and hex representation. This utility also understands fixed record lengths. p. Total customization of colors and fonts on a per window basis across the PM Patrol product. q. Run-Time of programs in the "Process Monitor" allows viewing the duration for which processes have been actively running. r. Improved Logging services with a new Log viewer able to view log data while logging is active and view very large log files efficiently and ability to log process level detail and CPU per active process. s. User Defined Monitor allows you to format your own monitor to have it displayed on PM patrol's main Status Line and allow it to be logged. t. Better integration to OS/2 Warp WorkPlace Shell and access to frequently used objects. Note: The on-line help contains a section called "Trouble Shooting". It discusses topics of potential difficulty, compatibility, and idiosyncrasies of PM Patrol features. Everyone should read this section. ═══ 19. Acknowledgments ═══ (c)SPM/2 and MMPM/2 for OS/2 are offered by IBM Corporation. (c)IBM LAN Server and (c)IBM LAN Requester are OS/2 network components offered by IBM Corporation. Windows (tm), Windows-95 (tm), and Windows NT (tm) are offered by Microsoft Corporation. ═══ 20. Special Thanks ═══ We would like to express our sincere appreciation to everyone who assisted in the production of this and onging releases of PM Patrol. Particularly, a special thanks goes to: Mike Coane, Aron Eisenpress, Jeff McCauley, Mark Saliture, Jen and Kyle.